| Index: lib/src/command/deps.dart
|
| diff --git a/lib/src/command/deps.dart b/lib/src/command/deps.dart
|
| index 32cb0cdd447f5e265171bebc4e9c7c83e9f8aa7d..caf8141a3e16b0400bb302a6764856344781486e 100644
|
| --- a/lib/src/command/deps.dart
|
| +++ b/lib/src/command/deps.dart
|
| @@ -24,11 +24,18 @@ class DepsCommand extends PubCommand {
|
| /// The [StringBuffer] used to accumulate the output.
|
| StringBuffer _buffer;
|
|
|
| + /// Whether to include dev dependencies.
|
| + bool get _includeDev => argResults['dev'];
|
| +
|
| DepsCommand() {
|
| argParser.addOption("style", abbr: "s",
|
| help: "How output should be displayed.",
|
| allowed: ["compact", "tree", "list"],
|
| defaultsTo: "tree");
|
| +
|
| + argParser.addFlag("dev", negatable: true,
|
| + help: "Whether to include dev dependencies.",
|
| + defaultsTo: true);
|
| }
|
|
|
| void run() {
|
| @@ -58,8 +65,10 @@ class DepsCommand extends PubCommand {
|
| var root = entrypoint.root;
|
| _outputCompactPackages("dependencies",
|
| root.dependencies.map((dep) => dep.name));
|
| - _outputCompactPackages("dev dependencies",
|
| - root.devDependencies.map((dep) => dep.name));
|
| + if (_includeDev) {
|
| + _outputCompactPackages("dev dependencies",
|
| + root.devDependencies.map((dep) => dep.name));
|
| + }
|
| _outputCompactPackages("dependency overrides",
|
| root.dependencyOverrides.map((dep) => dep.name));
|
|
|
| @@ -96,8 +105,10 @@ class DepsCommand extends PubCommand {
|
| var root = entrypoint.root;
|
| _outputListSection("dependencies",
|
| root.dependencies.map((dep) => dep.name));
|
| - _outputListSection("dev dependencies",
|
| - root.devDependencies.map((dep) => dep.name));
|
| + if (_includeDev) {
|
| + _outputListSection("dev dependencies",
|
| + root.devDependencies.map((dep) => dep.name));
|
| + }
|
| _outputListSection("dependency overrides",
|
| root.dependencyOverrides.map((dep) => dep.name));
|
|
|
| @@ -140,7 +151,11 @@ class DepsCommand extends PubCommand {
|
|
|
| // Start with the root dependencies.
|
| var packageTree = {};
|
| - for (var dep in entrypoint.root.immediateDependencies) {
|
| + var immediateDependencies = entrypoint.root.immediateDependencies.toSet();
|
| + if (!_includeDev) {
|
| + immediateDependencies.removeAll(entrypoint.root.devDependencies);
|
| + }
|
| + for (var dep in immediateDependenciesr) {
|
| toWalk.add(new Pair(_getPackage(dep.name), packageTree));
|
| }
|
|
|
| @@ -174,15 +189,29 @@ class DepsCommand extends PubCommand {
|
|
|
| /// Gets the names of the non-immediate dependencies of the root package.
|
| Set<String> _getTransitiveDependencies() {
|
| - var transitive = entrypoint.packageGraph.packages.keys.toSet();
|
| + var transitive = _getAllDependencies();
|
| var root = entrypoint.root;
|
| transitive.remove(root.name);
|
| transitive.removeAll(root.dependencies.map((dep) => dep.name));
|
| - transitive.removeAll(root.devDependencies.map((dep) => dep.name));
|
| + if (_includeDev) {
|
| + transitive.removeAll(root.devDependencies.map((dep) => dep.name));
|
| + }
|
| transitive.removeAll(root.dependencyOverrides.map((dep) => dep.name));
|
| return transitive;
|
| }
|
|
|
| + Set<String> _getAllDependencies() {
|
| + if (_includeDev) return entrypoint.packageGraph.packages.keys.toSet();
|
| +
|
| + var nonDevDependencies = entrypoint.root.dependencies.toList()
|
| + ..addAll(entrypoint.root.dependencyOverrides);
|
| + return nonDevDependencies
|
| + .expand((dep) =>
|
| + entrypoint.packageGraph.transitiveDependencies(dep.name))
|
| + .map((package) => package.name)
|
| + .toSet();
|
| + }
|
| +
|
| /// Get the package named [name], or throw a [DataError] if it's not
|
| /// available.
|
| ///
|
|
|