mirror of
https://github.com/dart-lang/sdk
synced 2024-09-18 20:51:19 +00:00
[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:
parent
34fcc56458
commit
8e3850395a
2
DEPS
2
DEPS
|
@ -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",
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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".'));
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue