Skip to content

Commit 8e38503

Browse files
devoncarewcommit-bot@chromium.org
authored andcommitted
[dartdev] refactor the dartdev pub command - delegate to the pub snapshot
Change-Id: If0221ba6472271a186fc8628416ddca73e951a80 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137653 Commit-Queue: Devon Carew <[email protected]> Reviewed-by: Jaime Wren <[email protected]>
1 parent 34fcc56 commit 8e38503

File tree

4 files changed

+36
-79
lines changed

4 files changed

+36
-79
lines changed

DEPS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ vars = {
5656
"gperftools_revision": "e9ab4c53041ac62feefbbb076d326e9a77dd1567",
5757

5858
# Revisions of /third_party/* dependencies.
59-
"args_tag": "1.5.2",
59+
"args_tag": "1.5.3",
6060
"async_tag": "2.0.8",
6161
"bazel_worker_tag": "v0.1.22",
6262
"benchmark_harness_tag": "81641290dea44c34138a109a37e215482f405f81",

pkg/dartdev/lib/src/commands/pub.dart

Lines changed: 16 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -3,75 +3,30 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'dart:async';
6+
import 'dart:io';
67

7-
import 'package:pub/src/command/cache.dart';
8-
import 'package:pub/src/command/deps.dart';
9-
import 'package:pub/src/command/downgrade.dart';
10-
import 'package:pub/src/command/get.dart';
11-
import 'package:pub/src/command/global.dart';
12-
import 'package:pub/src/command/lish.dart';
13-
import 'package:pub/src/command/list_package_dirs.dart';
14-
import 'package:pub/src/command/logout.dart';
15-
import 'package:pub/src/command/run.dart';
16-
import 'package:pub/src/command/serve.dart';
17-
import 'package:pub/src/command/upgrade.dart';
18-
import 'package:pub/src/command/uploader.dart';
19-
import 'package:pub/src/command_runner.dart';
8+
import 'package:args/args.dart';
209

2110
import '../core.dart';
22-
import '../utils.dart';
11+
import '../sdk.dart';
2312

2413
class PubCommand extends DartdevCommand<int> {
25-
var pubCommandRunner = PubCommandRunner();
14+
PubCommand({bool verbose = false}) : super('pub', 'Work with packages.');
2615

27-
PubCommand({bool verbose = false}) : super('pub', 'Work with packages.') {
28-
argParser.addFlag('version', negatable: false, help: 'Print pub version.');
29-
argParser.addFlag('trace',
30-
help: 'Print debugging information when an error occurs.');
31-
argParser
32-
.addOption('verbosity', help: 'Control output verbosity.', allowed: [
33-
'error',
34-
'warning',
35-
'normal',
36-
'io',
37-
'solver',
38-
'all'
39-
], allowedHelp: {
40-
'error': 'Show only errors.',
41-
'warning': 'Show only errors and warnings.',
42-
'normal': 'Show errors, warnings, and user messages.',
43-
'io': 'Also show IO operations.',
44-
'solver': 'Show steps during version resolution.',
45-
'all': 'Show all output including internal tracing messages.'
46-
});
47-
argParser.addFlag('verbose',
48-
abbr: 'v', negatable: false, help: 'Shortcut for "--verbosity=all".');
49-
argParser.addFlag('with-prejudice',
50-
hide: !isAprilFools,
51-
negatable: false,
52-
help: 'Execute commands with prejudice.');
53-
argParser.addFlag('sparkle',
54-
hide: !isAprilFools,
55-
negatable: false,
56-
help: 'A more sparkly experience.');
57-
58-
addSubcommand(CacheCommand());
59-
addSubcommand(DepsCommand());
60-
addSubcommand(DowngradeCommand());
61-
addSubcommand(GlobalCommand());
62-
addSubcommand(GetCommand());
63-
addSubcommand(ListPackageDirsCommand());
64-
addSubcommand(LishCommand());
65-
addSubcommand(RunCommand());
66-
addSubcommand(ServeCommand());
67-
addSubcommand(UpgradeCommand());
68-
addSubcommand(UploaderCommand());
69-
addSubcommand(LogoutCommand());
70-
}
16+
final ArgParser argParser = ArgParser.allowAnything();
7117

7218
@override
7319
FutureOr<int> run() async {
74-
await pubCommandRunner.run(argResults.arguments);
75-
return 0;
20+
final command = sdk.pub;
21+
final args = argResults.arguments;
22+
23+
log.trace('$command ${args.join(' ')}');
24+
25+
// Starting in ProcessStartMode.inheritStdio mode means the child process
26+
// can detect support for ansi chars.
27+
var process =
28+
await Process.start(command, args, mode: ProcessStartMode.inheritStdio);
29+
30+
return process.exitCode;
7631
}
7732
}

pkg/dartdev/test/commands/pub_test.dart

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,41 +18,35 @@ void pub() {
1818
test('implicit --help', () {
1919
p = project();
2020
var result = p.runSync('pub', []);
21-
expect(result.exitCode, 64);
22-
expect(result.stdout, isEmpty);
23-
expect(result.stderr, contains('Usage: dart pub <subcommand> [arguments]'));
24-
expect(result.stderr,
25-
contains('Print debugging information when an error occurs.'));
21+
expect(result.exitCode, 0);
22+
expect(result.stdout, contains('Pub is a package manager for Dart'));
23+
expect(result.stdout, contains('Available commands:'));
24+
expect(result.stderr, isEmpty);
2625
});
2726

2827
test('--help', () {
2928
p = project();
3029
var result = p.runSync('pub', ['--help']);
3130

3231
expect(result.exitCode, 0);
32+
expect(result.stdout, contains('Pub is a package manager for Dart'));
33+
expect(result.stdout, contains('Available commands:'));
3334
expect(result.stderr, isEmpty);
34-
expect(result.stdout, contains('Work with packages'));
35-
expect(result.stdout, contains('Usage: dart pub <subcommand> [arguments]'));
36-
expect(result.stdout,
37-
contains('Print debugging information when an error occurs.'));
3835
});
3936

40-
test('success', () {
37+
test('failure', () {
4138
p = project(mainSrc: 'int get foo => 1;\n');
4239
var result = p.runSync('pub', ['deps']);
43-
expect(result.exitCode, 1);
44-
expect(
45-
result.stderr,
46-
startsWith(
47-
'''No pubspec.lock file found, please run "pub get" first.'''));
40+
expect(result.exitCode, 65);
4841
expect(result.stdout, isEmpty);
42+
expect(result.stderr, contains('No pubspec.lock file found'));
4943
});
5044

51-
test('failure', () {
45+
test('failure unknown option', () {
5246
p = project(mainSrc: 'int get foo => 1;\n');
5347
var result = p.runSync('pub', ['deps', '--foo']);
5448
expect(result.exitCode, 64);
55-
expect(result.stderr, startsWith('Could not find an option named "foo".'));
5649
expect(result.stdout, isEmpty);
50+
expect(result.stderr, startsWith('Could not find an option named "foo".'));
5751
});
5852
}

utils/dartdev/BUILD.gn

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,15 @@
44

55
import("../application_snapshot.gni")
66

7+
dartdev_files = exec_script("../../tools/list_dart_files.py",
8+
[
9+
"absolute",
10+
rebase_path("../../pkg/dartdev"),
11+
],
12+
"list lines")
13+
714
application_snapshot("dartdev") {
815
main_dart = "../../pkg/dartdev/bin/dartdev.dart"
916
training_args = [ "--help" ]
17+
inputs = dartdev_files
1018
}

0 commit comments

Comments
 (0)