[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 <devoncarew@google.com>
Reviewed-by: Jaime Wren <jwren@google.com>
This commit is contained in:
Devon Carew 2020-02-28 23:22:30 +00:00 committed by commit-bot@chromium.org
parent 34fcc56458
commit 8e3850395a
4 changed files with 40 additions and 83 deletions

2
DEPS
View file

@ -56,7 +56,7 @@ vars = {
"gperftools_revision": "e9ab4c53041ac62feefbbb076d326e9a77dd1567",
# Revisions of /third_party/* dependencies.
"args_tag": "1.5.2",
"args_tag": "1.5.3",
"async_tag": "2.0.8",
"bazel_worker_tag": "v0.1.22",
"benchmark_harness_tag": "81641290dea44c34138a109a37e215482f405f81",

View file

@ -3,75 +3,30 @@
// BSD-style license that can be found in the LICENSE file.
import 'dart:async';
import 'dart:io';
import 'package:pub/src/command/cache.dart';
import 'package:pub/src/command/deps.dart';
import 'package:pub/src/command/downgrade.dart';
import 'package:pub/src/command/get.dart';
import 'package:pub/src/command/global.dart';
import 'package:pub/src/command/lish.dart';
import 'package:pub/src/command/list_package_dirs.dart';
import 'package:pub/src/command/logout.dart';
import 'package:pub/src/command/run.dart';
import 'package:pub/src/command/serve.dart';
import 'package:pub/src/command/upgrade.dart';
import 'package:pub/src/command/uploader.dart';
import 'package:pub/src/command_runner.dart';
import 'package:args/args.dart';
import '../core.dart';
import '../utils.dart';
import '../sdk.dart';
class PubCommand extends DartdevCommand<int> {
var pubCommandRunner = PubCommandRunner();
PubCommand({bool verbose = false}) : super('pub', 'Work with packages.');
PubCommand({bool verbose = false}) : super('pub', 'Work with packages.') {
argParser.addFlag('version', negatable: false, help: 'Print pub version.');
argParser.addFlag('trace',
help: 'Print debugging information when an error occurs.');
argParser
.addOption('verbosity', help: 'Control output verbosity.', allowed: [
'error',
'warning',
'normal',
'io',
'solver',
'all'
], allowedHelp: {
'error': 'Show only errors.',
'warning': 'Show only errors and warnings.',
'normal': 'Show errors, warnings, and user messages.',
'io': 'Also show IO operations.',
'solver': 'Show steps during version resolution.',
'all': 'Show all output including internal tracing messages.'
});
argParser.addFlag('verbose',
abbr: 'v', negatable: false, help: 'Shortcut for "--verbosity=all".');
argParser.addFlag('with-prejudice',
hide: !isAprilFools,
negatable: false,
help: 'Execute commands with prejudice.');
argParser.addFlag('sparkle',
hide: !isAprilFools,
negatable: false,
help: 'A more sparkly experience.');
addSubcommand(CacheCommand());
addSubcommand(DepsCommand());
addSubcommand(DowngradeCommand());
addSubcommand(GlobalCommand());
addSubcommand(GetCommand());
addSubcommand(ListPackageDirsCommand());
addSubcommand(LishCommand());
addSubcommand(RunCommand());
addSubcommand(ServeCommand());
addSubcommand(UpgradeCommand());
addSubcommand(UploaderCommand());
addSubcommand(LogoutCommand());
}
final ArgParser argParser = ArgParser.allowAnything();
@override
FutureOr<int> run() async {
await pubCommandRunner.run(argResults.arguments);
return 0;
final command = sdk.pub;
final args = argResults.arguments;
log.trace('$command ${args.join(' ')}');
// Starting in ProcessStartMode.inheritStdio mode means the child process
// can detect support for ansi chars.
var process =
await Process.start(command, args, mode: ProcessStartMode.inheritStdio);
return process.exitCode;
}
}

View file

@ -18,11 +18,10 @@ void pub() {
test('implicit --help', () {
p = project();
var result = p.runSync('pub', []);
expect(result.exitCode, 64);
expect(result.stdout, isEmpty);
expect(result.stderr, contains('Usage: dart pub <subcommand> [arguments]'));
expect(result.stderr,
contains('Print debugging information when an error occurs.'));
expect(result.exitCode, 0);
expect(result.stdout, contains('Pub is a package manager for Dart'));
expect(result.stdout, contains('Available commands:'));
expect(result.stderr, isEmpty);
});
test('--help', () {
@ -30,29 +29,24 @@ void pub() {
var result = p.runSync('pub', ['--help']);
expect(result.exitCode, 0);
expect(result.stdout, contains('Pub is a package manager for Dart'));
expect(result.stdout, contains('Available commands:'));
expect(result.stderr, isEmpty);
expect(result.stdout, contains('Work with packages'));
expect(result.stdout, contains('Usage: dart pub <subcommand> [arguments]'));
expect(result.stdout,
contains('Print debugging information when an error occurs.'));
});
test('success', () {
p = project(mainSrc: 'int get foo => 1;\n');
var result = p.runSync('pub', ['deps']);
expect(result.exitCode, 1);
expect(
result.stderr,
startsWith(
'''No pubspec.lock file found, please run "pub get" first.'''));
expect(result.stdout, isEmpty);
});
test('failure', () {
p = project(mainSrc: 'int get foo => 1;\n');
var result = p.runSync('pub', ['deps']);
expect(result.exitCode, 65);
expect(result.stdout, isEmpty);
expect(result.stderr, contains('No pubspec.lock file found'));
});
test('failure unknown option', () {
p = project(mainSrc: 'int get foo => 1;\n');
var result = p.runSync('pub', ['deps', '--foo']);
expect(result.exitCode, 64);
expect(result.stderr, startsWith('Could not find an option named "foo".'));
expect(result.stdout, isEmpty);
expect(result.stderr, startsWith('Could not find an option named "foo".'));
});
}

View file

@ -4,7 +4,15 @@
import("../application_snapshot.gni")
dartdev_files = exec_script("../../tools/list_dart_files.py",
[
"absolute",
rebase_path("../../pkg/dartdev"),
],
"list lines")
application_snapshot("dartdev") {
main_dart = "../../pkg/dartdev/bin/dartdev.dart"
training_args = [ "--help" ]
inputs = dartdev_files
}