Split out directDependencies and devDependencies in `pub deps` (#4383)
diff --git a/lib/src/command/deps.dart b/lib/src/command/deps.dart
index 212d541..e197f33 100644
--- a/lib/src/command/deps.dart
+++ b/lib/src/command/deps.dart
@@ -126,7 +126,17 @@
'version': currentPackage.version.toString(),
'kind': kind,
'source': source,
- 'dependencies': next,
+ // This field is kept for backwards compatibility with dart 3.5 and
+ // before. Clients should opt to consume directDependencies and
+ // devDependencies separately instead.
+ 'dependencies': (isRoot
+ ? currentPackage.dependencies
+ : currentPackage.immediateDependencies)
+ .keys
+ .toList(),
+ 'directDependencies': currentPackage.dependencies.keys.toList(),
+ if (isRoot)
+ 'devDependencies': currentPackage.devDependencies.keys.toList(),
});
toVisit.addAll(next);
}
diff --git a/test/deps_test.dart b/test/deps_test.dart
index 2faca20..e90e5db 100644
--- a/test/deps_test.dart
+++ b/test/deps_test.dart
@@ -158,9 +158,15 @@
"dependencies": [
"normal",
"overridden",
- "from_path",
- "unittest",
- "override_only"
+ "from_path"
+ ],
+ "directDependencies": [
+ "normal",
+ "overridden",
+ "from_path"
+ ],
+ "devDependencies": [
+ "unittest"
]
},
{
@@ -168,7 +174,8 @@
"version": "1.2.3",
"kind": "transitive",
"source": "hosted",
- "dependencies": []
+ "dependencies": [],
+ "directDependencies": []
},
{
"name": "unittest",
@@ -178,6 +185,10 @@
"dependencies": [
"shared",
"dev_only"
+ ],
+ "directDependencies": [
+ "shared",
+ "dev_only"
]
},
{
@@ -185,7 +196,8 @@
"version": "1.2.3",
"kind": "transitive",
"source": "hosted",
- "dependencies": []
+ "dependencies": [],
+ "directDependencies": []
},
{
"name": "shared",
@@ -194,6 +206,9 @@
"source": "hosted",
"dependencies": [
"other"
+ ],
+ "directDependencies": [
+ "other"
]
},
{
@@ -203,6 +218,9 @@
"source": "hosted",
"dependencies": [
"myapp"
+ ],
+ "directDependencies": [
+ "myapp"
]
},
{
@@ -210,14 +228,16 @@
"version": "1.2.3",
"kind": "direct",
"source": "path",
- "dependencies": []
+ "dependencies": [],
+ "directDependencies": []
},
{
"name": "overridden",
"version": "2.0.0",
"kind": "direct",
"source": "hosted",
- "dependencies": []
+ "dependencies": [],
+ "directDependencies": []
},
{
"name": "normal",
@@ -227,6 +247,10 @@
"dependencies": [
"transitive",
"circular_a"
+ ],
+ "directDependencies": [
+ "transitive",
+ "circular_a"
]
},
{
@@ -236,6 +260,9 @@
"source": "hosted",
"dependencies": [
"circular_b"
+ ],
+ "directDependencies": [
+ "circular_b"
]
},
{
@@ -245,6 +272,9 @@
"source": "hosted",
"dependencies": [
"circular_a"
+ ],
+ "directDependencies": [
+ "circular_a"
]
},
{
@@ -254,6 +284,9 @@
"source": "hosted",
"dependencies": [
"shared"
+ ],
+ "directDependencies": [
+ "shared"
]
}
],
diff --git a/test/testdata/goldens/deps/executables_test/applies formatting before printing executables.txt b/test/testdata/goldens/deps/executables_test/applies formatting before printing executables.txt
index 94e40bd..f6b0448 100644
--- a/test/testdata/goldens/deps/executables_test/applies formatting before printing executables.txt
+++ b/test/testdata/goldens/deps/executables_test/applies formatting before printing executables.txt
@@ -48,21 +48,28 @@
"dependencies": [
"foo",
"bar"
- ]
+ ],
+ "directDependencies": [
+ "foo",
+ "bar"
+ ],
+ "devDependencies": []
},
{
"name": "bar",
"version": "1.0.0",
"kind": "direct",
"source": "path",
- "dependencies": []
+ "dependencies": [],
+ "directDependencies": []
},
{
"name": "foo",
"version": "1.0.0",
"kind": "direct",
"source": "path",
- "dependencies": []
+ "dependencies": [],
+ "directDependencies": []
}
],
"sdks": [
diff --git a/test/testdata/goldens/deps/executables_test/dev dependencies.txt b/test/testdata/goldens/deps/executables_test/dev dependencies.txt
index fe0d91c..d0b2ffa 100644
--- a/test/testdata/goldens/deps/executables_test/dev dependencies.txt
+++ b/test/testdata/goldens/deps/executables_test/dev dependencies.txt
@@ -34,7 +34,9 @@
"version": "0.0.0",
"kind": "root",
"source": "root",
- "dependencies": [
+ "dependencies": [],
+ "directDependencies": [],
+ "devDependencies": [
"foo"
]
},
@@ -43,7 +45,8 @@
"version": "1.0.0",
"kind": "dev",
"source": "path",
- "dependencies": []
+ "dependencies": [],
+ "directDependencies": []
}
],
"sdks": [
diff --git a/test/testdata/goldens/deps/executables_test/lists Dart executables, without entrypoints.txt b/test/testdata/goldens/deps/executables_test/lists Dart executables, without entrypoints.txt
index 4a9cf40..89c4b04 100644
--- a/test/testdata/goldens/deps/executables_test/lists Dart executables, without entrypoints.txt
+++ b/test/testdata/goldens/deps/executables_test/lists Dart executables, without entrypoints.txt
@@ -33,7 +33,9 @@
"version": "0.0.0",
"kind": "root",
"source": "root",
- "dependencies": []
+ "dependencies": [],
+ "directDependencies": [],
+ "devDependencies": []
}
],
"sdks": [
diff --git a/test/testdata/goldens/deps/executables_test/lists executables from a dependency.txt b/test/testdata/goldens/deps/executables_test/lists executables from a dependency.txt
index a2e04ea..33c7a04 100644
--- a/test/testdata/goldens/deps/executables_test/lists executables from a dependency.txt
+++ b/test/testdata/goldens/deps/executables_test/lists executables from a dependency.txt
@@ -36,14 +36,19 @@
"source": "root",
"dependencies": [
"foo"
- ]
+ ],
+ "directDependencies": [
+ "foo"
+ ],
+ "devDependencies": []
},
{
"name": "foo",
"version": "1.0.0",
"kind": "direct",
"source": "path",
- "dependencies": []
+ "dependencies": [],
+ "directDependencies": []
}
],
"sdks": [
diff --git a/test/testdata/goldens/deps/executables_test/lists executables only from immediate dependencies.txt b/test/testdata/goldens/deps/executables_test/lists executables only from immediate dependencies.txt
index 5641ae5..cb13a57 100644
--- a/test/testdata/goldens/deps/executables_test/lists executables only from immediate dependencies.txt
+++ b/test/testdata/goldens/deps/executables_test/lists executables only from immediate dependencies.txt
@@ -40,7 +40,11 @@
"source": "root",
"dependencies": [
"foo"
- ]
+ ],
+ "directDependencies": [
+ "foo"
+ ],
+ "devDependencies": []
},
{
"name": "foo",
@@ -49,6 +53,9 @@
"source": "path",
"dependencies": [
"baz"
+ ],
+ "directDependencies": [
+ "baz"
]
},
{
@@ -56,7 +63,8 @@
"version": "1.0.0",
"kind": "transitive",
"source": "path",
- "dependencies": []
+ "dependencies": [],
+ "directDependencies": []
}
],
"sdks": [
diff --git a/test/testdata/goldens/deps/executables_test/overriden dependencies executables.txt b/test/testdata/goldens/deps/executables_test/overriden dependencies executables.txt
index 4502673..ad13621 100644
--- a/test/testdata/goldens/deps/executables_test/overriden dependencies executables.txt
+++ b/test/testdata/goldens/deps/executables_test/overriden dependencies executables.txt
@@ -41,14 +41,19 @@
"source": "root",
"dependencies": [
"foo"
- ]
+ ],
+ "directDependencies": [
+ "foo"
+ ],
+ "devDependencies": []
},
{
"name": "foo",
"version": "2.0.0",
"kind": "direct",
"source": "path",
- "dependencies": []
+ "dependencies": [],
+ "directDependencies": []
}
],
"sdks": [
diff --git a/test/testdata/goldens/deps/executables_test/skips executables in sub directories.txt b/test/testdata/goldens/deps/executables_test/skips executables in sub directories.txt
index ce15a02..044eb9b 100644
--- a/test/testdata/goldens/deps/executables_test/skips executables in sub directories.txt
+++ b/test/testdata/goldens/deps/executables_test/skips executables in sub directories.txt
@@ -34,7 +34,9 @@
"version": "0.0.0",
"kind": "root",
"source": "root",
- "dependencies": []
+ "dependencies": [],
+ "directDependencies": [],
+ "devDependencies": []
}
],
"sdks": [
diff --git a/test/testdata/goldens/deps/executables_test/skips non-Dart executables.txt b/test/testdata/goldens/deps/executables_test/skips non-Dart executables.txt
index 71c0fc2..6b8ffe1 100644
--- a/test/testdata/goldens/deps/executables_test/skips non-Dart executables.txt
+++ b/test/testdata/goldens/deps/executables_test/skips non-Dart executables.txt
@@ -31,7 +31,9 @@
"version": "0.0.0",
"kind": "root",
"source": "root",
- "dependencies": []
+ "dependencies": [],
+ "directDependencies": [],
+ "devDependencies": []
}
],
"sdks": [
diff --git a/test/workspace_test.dart b/test/workspace_test.dart
index 147c543..e7d2095 100644
--- a/test/workspace_test.dart
+++ b/test/workspace_test.dart
@@ -539,6 +539,103 @@
transitive dependencies:
- transitive 1.0.0''',
);
+ await runPub(
+ args: ['deps', '--json'],
+ environment: {'_PUB_TEST_SDK_VERSION': '3.5.0'},
+ output: '''
+{
+ "root": "myapp",
+ "packages": [
+ {
+ "name": "b",
+ "version": "1.1.1",
+ "kind": "root",
+ "source": "root",
+ "dependencies": [
+ "myapp",
+ "both"
+ ],
+ "directDependencies": [
+ "myapp",
+ "both"
+ ],
+ "devDependencies": []
+ },
+ {
+ "name": "both",
+ "version": "1.0.0",
+ "kind": "direct",
+ "source": "hosted",
+ "dependencies": [],
+ "directDependencies": []
+ },
+ {
+ "name": "myapp",
+ "version": "1.2.3",
+ "kind": "root",
+ "source": "root",
+ "dependencies": [
+ "both",
+ "b"
+ ],
+ "directDependencies": [
+ "both",
+ "b"
+ ],
+ "devDependencies": []
+ },
+ {
+ "name": "a",
+ "version": "1.1.1",
+ "kind": "root",
+ "source": "root",
+ "dependencies": [
+ "myapp",
+ "foo"
+ ],
+ "directDependencies": [
+ "myapp",
+ "foo"
+ ],
+ "devDependencies": [
+ "both"
+ ]
+ },
+ {
+ "name": "foo",
+ "version": "1.0.0",
+ "kind": "transitive",
+ "source": "hosted",
+ "dependencies": [
+ "transitive"
+ ],
+ "directDependencies": [
+ "transitive"
+ ]
+ },
+ {
+ "name": "transitive",
+ "version": "1.0.0",
+ "kind": "transitive",
+ "source": "hosted",
+ "dependencies": [],
+ "directDependencies": []
+ }
+ ],
+ "sdks": [
+ {
+ "name": "Dart",
+ "version": "3.5.0"
+ }
+ ],
+ "executables": [
+ ":myappmain",
+ "both:bothmain",
+ "b:bmain"
+ ]
+}
+''',
+ );
await runPub(
args: ['deps', '--style=list', '--no-dev'],