| Index: sdk/lib/_internal/pub_generated/lib/src/command/barback.dart
|
| diff --git a/sdk/lib/_internal/pub_generated/lib/src/command/barback.dart b/sdk/lib/_internal/pub_generated/lib/src/command/barback.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..08ffdb0926a5b0cee027cb5e821a5e741ceae96b
|
| --- /dev/null
|
| +++ b/sdk/lib/_internal/pub_generated/lib/src/command/barback.dart
|
| @@ -0,0 +1,124 @@
|
| +library pub.command.barback;
|
| +import 'dart:async';
|
| +import 'package:barback/barback.dart';
|
| +import 'package:path/path.dart' as path;
|
| +import '../command.dart';
|
| +import '../io.dart';
|
| +import '../log.dart' as log;
|
| +import '../utils.dart';
|
| +final _arrow = getSpecial('\u2192', '=>');
|
| +final _allSourceDirectories =
|
| + new Set<String>.from(["benchmark", "bin", "example", "test", "web"]);
|
| +abstract class BarbackCommand extends PubCommand {
|
| + final takesArguments = true;
|
| + BarbackMode get mode => new BarbackMode(commandOptions["mode"]);
|
| + final sourceDirectories = new Set<String>();
|
| + BarbackMode get defaultMode => BarbackMode.RELEASE;
|
| + List<String> get defaultSourceDirectories;
|
| + BarbackCommand() {
|
| + commandParser.addOption(
|
| + "mode",
|
| + defaultsTo: defaultMode.toString(),
|
| + help: "Mode to run transformers in.");
|
| + commandParser.addFlag(
|
| + "all",
|
| + help: "Use all default source directories.",
|
| + defaultsTo: false,
|
| + negatable: false);
|
| + }
|
| + Future onRun() {
|
| + log.json.enabled = commandOptions.options.contains("format") &&
|
| + commandOptions["format"] == "json";
|
| + _parseSourceDirectories();
|
| + return onRunTransformerCommand();
|
| + }
|
| + Future onRunTransformerCommand();
|
| + void _parseSourceDirectories() {
|
| + if (commandOptions["all"]) {
|
| + _addAllDefaultSources();
|
| + return;
|
| + }
|
| + if (commandOptions.rest.isEmpty) {
|
| + _addDefaultSources();
|
| + return;
|
| + }
|
| + sourceDirectories.addAll(commandOptions.rest);
|
| + var disallowed = sourceDirectories.where((dir) {
|
| + var parts = path.split(path.normalize(dir));
|
| + return parts.isNotEmpty && parts.first == "lib";
|
| + });
|
| + if (disallowed.isNotEmpty) {
|
| + usageError(_directorySentence(disallowed, "is", "are", "not allowed"));
|
| + }
|
| + var invalid = sourceDirectories.where((dir) => !path.isWithin('.', dir));
|
| + if (invalid.isNotEmpty) {
|
| + usageError(
|
| + _directorySentence(invalid, "isn't", "aren't", "in this package"));
|
| + }
|
| + var missing = sourceDirectories.where(
|
| + (dir) => !dirExists(path.join(entrypoint.root.dir, dir)));
|
| + if (missing.isNotEmpty) {
|
| + dataError(_directorySentence(missing, "does", "do", "not exist"));
|
| + }
|
| + var sources = sourceDirectories.toList();
|
| + var overlapping = new Set();
|
| + for (var i = 0; i < sources.length; i++) {
|
| + for (var j = i + 1; j < sources.length; j++) {
|
| + if (path.isWithin(sources[i], sources[j]) ||
|
| + path.isWithin(sources[j], sources[i])) {
|
| + overlapping.add(sources[i]);
|
| + overlapping.add(sources[j]);
|
| + }
|
| + }
|
| + }
|
| + if (overlapping.isNotEmpty) {
|
| + usageError(
|
| + _directorySentence(overlapping, "cannot", "cannot", "overlap"));
|
| + }
|
| + }
|
| + void _addAllDefaultSources() {
|
| + if (commandOptions.rest.isNotEmpty) {
|
| + usageError('Directory names are not allowed if "--all" is passed.');
|
| + }
|
| + var dirs = _allSourceDirectories.where(
|
| + (dir) => dirExists(path.join(entrypoint.root.dir, dir)));
|
| + if (dirs.isEmpty) {
|
| + var defaultDirs =
|
| + toSentence(_allSourceDirectories.map((name) => '"$name"'));
|
| + dataError(
|
| + 'There are no source directories present.\n'
|
| + 'The default directories are $defaultDirs.');
|
| + }
|
| + sourceDirectories.addAll(dirs);
|
| + }
|
| + void _addDefaultSources() {
|
| + sourceDirectories.addAll(
|
| + defaultSourceDirectories.where(
|
| + (dir) => dirExists(path.join(entrypoint.root.dir, dir))));
|
| + if (sourceDirectories.isEmpty) {
|
| + var defaults;
|
| + if (defaultSourceDirectories.length == 1) {
|
| + defaults = 'a "${defaultSourceDirectories.first}" directory';
|
| + } else {
|
| + defaults =
|
| + '"${defaultSourceDirectories[0]}" and/or '
|
| + '"${defaultSourceDirectories[1]}" directories';
|
| + }
|
| + dataError(
|
| + "Your package must have $defaults,\n"
|
| + "or you must specify the source directories.");
|
| + }
|
| + }
|
| + String _directorySentence(Iterable<String> directoryNames,
|
| + String singularVerb, String pluralVerb, String suffix) {
|
| + var directories =
|
| + pluralize('Directory', directoryNames.length, plural: 'Directories');
|
| + var names = toSentence(directoryNames.map((dir) => '"$dir"'));
|
| + var verb =
|
| + pluralize(singularVerb, directoryNames.length, plural: pluralVerb);
|
| + var result = "$directories $names $verb";
|
| + if (suffix != null) result += " $suffix";
|
| + result += ".";
|
| + return result;
|
| + }
|
| +}
|
|
|