Add dependency constraints natively to `pub deps --json` (#4797)
diff --git a/lib/src/command/deps.dart b/lib/src/command/deps.dart
index f74aeb5..8304b22 100644
--- a/lib/src/command/deps.dart
+++ b/lib/src/command/deps.dart
@@ -148,6 +148,10 @@
'directDependencies': currentPackage.dependencies.keys.toList(),
if (isRoot)
'devDependencies': currentPackage.devDependencies.keys.toList(),
+ 'dependencyConstraints': (isRoot
+ ? currentPackage.immediateDependencies
+ : currentPackage.dependencies)
+ .map((k, v) => MapEntry(k, v.constraint.toString())),
});
toVisit.addAll(next);
}
diff --git a/test/deps_test.dart b/test/deps_test.dart
index 3aff815..11dc020 100644
--- a/test/deps_test.dart
+++ b/test/deps_test.dart
@@ -172,7 +172,14 @@
],
"devDependencies": [
"unittest"
- ]
+ ],
+ "dependencyConstraints": {
+ "normal": "any",
+ "overridden": "2.0.0",
+ "from_path": "any",
+ "unittest": "any",
+ "override_only": "any"
+ }
},
{
"name": "override_only",
@@ -180,7 +187,8 @@
"kind": "transitive",
"source": "hosted",
"dependencies": [],
- "directDependencies": []
+ "directDependencies": [],
+ "dependencyConstraints": {}
},
{
"name": "unittest",
@@ -194,7 +202,11 @@
"directDependencies": [
"shared",
"dev_only"
- ]
+ ],
+ "dependencyConstraints": {
+ "shared": "any",
+ "dev_only": "any"
+ }
},
{
"name": "dev_only",
@@ -202,7 +214,8 @@
"kind": "transitive",
"source": "hosted",
"dependencies": [],
- "directDependencies": []
+ "directDependencies": [],
+ "dependencyConstraints": {}
},
{
"name": "shared",
@@ -214,7 +227,10 @@
],
"directDependencies": [
"other"
- ]
+ ],
+ "dependencyConstraints": {
+ "other": "any"
+ }
},
{
"name": "other",
@@ -226,7 +242,10 @@
],
"directDependencies": [
"myapp"
- ]
+ ],
+ "dependencyConstraints": {
+ "myapp": "any"
+ }
},
{
"name": "from_path",
@@ -234,7 +253,8 @@
"kind": "direct",
"source": "path",
"dependencies": [],
- "directDependencies": []
+ "directDependencies": [],
+ "dependencyConstraints": {}
},
{
"name": "overridden",
@@ -242,7 +262,8 @@
"kind": "direct",
"source": "hosted",
"dependencies": [],
- "directDependencies": []
+ "directDependencies": [],
+ "dependencyConstraints": {}
},
{
"name": "normal",
@@ -256,7 +277,11 @@
"directDependencies": [
"transitive",
"circular_a"
- ]
+ ],
+ "dependencyConstraints": {
+ "transitive": "any",
+ "circular_a": "any"
+ }
},
{
"name": "circular_a",
@@ -268,7 +293,10 @@
],
"directDependencies": [
"circular_b"
- ]
+ ],
+ "dependencyConstraints": {
+ "circular_b": "any"
+ }
},
{
"name": "circular_b",
@@ -280,7 +308,10 @@
],
"directDependencies": [
"circular_a"
- ]
+ ],
+ "dependencyConstraints": {
+ "circular_a": "any"
+ }
},
{
"name": "transitive",
@@ -292,7 +323,10 @@
],
"directDependencies": [
"shared"
- ]
+ ],
+ "dependencyConstraints": {
+ "shared": "any"
+ }
}
],
"sdks": [
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 f6b0448..beca1d7 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
@@ -53,7 +53,11 @@
"foo",
"bar"
],
- "devDependencies": []
+ "devDependencies": [],
+ "dependencyConstraints": {
+ "foo": "any",
+ "bar": "any"
+ }
},
{
"name": "bar",
@@ -61,7 +65,8 @@
"kind": "direct",
"source": "path",
"dependencies": [],
- "directDependencies": []
+ "directDependencies": [],
+ "dependencyConstraints": {}
},
{
"name": "foo",
@@ -69,7 +74,8 @@
"kind": "direct",
"source": "path",
"dependencies": [],
- "directDependencies": []
+ "directDependencies": [],
+ "dependencyConstraints": {}
}
],
"sdks": [
diff --git a/test/testdata/goldens/deps/executables_test/dev dependencies.txt b/test/testdata/goldens/deps/executables_test/dev dependencies.txt
index 0e30ebc..5784bfd 100644
--- a/test/testdata/goldens/deps/executables_test/dev dependencies.txt
+++ b/test/testdata/goldens/deps/executables_test/dev dependencies.txt
@@ -40,7 +40,10 @@
"directDependencies": [],
"devDependencies": [
"foo"
- ]
+ ],
+ "dependencyConstraints": {
+ "foo": "any"
+ }
},
{
"name": "foo",
@@ -48,7 +51,8 @@
"kind": "dev",
"source": "path",
"dependencies": [],
- "directDependencies": []
+ "directDependencies": [],
+ "dependencyConstraints": {}
}
],
"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 89c4b04..173978d 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
@@ -35,7 +35,8 @@
"source": "root",
"dependencies": [],
"directDependencies": [],
- "devDependencies": []
+ "devDependencies": [],
+ "dependencyConstraints": {}
}
],
"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 33c7a04..876f2c4 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
@@ -40,7 +40,10 @@
"directDependencies": [
"foo"
],
- "devDependencies": []
+ "devDependencies": [],
+ "dependencyConstraints": {
+ "foo": "any"
+ }
},
{
"name": "foo",
@@ -48,7 +51,8 @@
"kind": "direct",
"source": "path",
"dependencies": [],
- "directDependencies": []
+ "directDependencies": [],
+ "dependencyConstraints": {}
}
],
"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 cb13a57..9dc658f 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
@@ -44,7 +44,10 @@
"directDependencies": [
"foo"
],
- "devDependencies": []
+ "devDependencies": [],
+ "dependencyConstraints": {
+ "foo": "any"
+ }
},
{
"name": "foo",
@@ -56,7 +59,10 @@
],
"directDependencies": [
"baz"
- ]
+ ],
+ "dependencyConstraints": {
+ "baz": "any"
+ }
},
{
"name": "baz",
@@ -64,7 +70,8 @@
"kind": "transitive",
"source": "path",
"dependencies": [],
- "directDependencies": []
+ "directDependencies": [],
+ "dependencyConstraints": {}
}
],
"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 ad13621..775ca03 100644
--- a/test/testdata/goldens/deps/executables_test/overriden dependencies executables.txt
+++ b/test/testdata/goldens/deps/executables_test/overriden dependencies executables.txt
@@ -45,7 +45,10 @@
"directDependencies": [
"foo"
],
- "devDependencies": []
+ "devDependencies": [],
+ "dependencyConstraints": {
+ "foo": "any"
+ }
},
{
"name": "foo",
@@ -53,7 +56,8 @@
"kind": "direct",
"source": "path",
"dependencies": [],
- "directDependencies": []
+ "directDependencies": [],
+ "dependencyConstraints": {}
}
],
"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 044eb9b..a7bad55 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
@@ -36,7 +36,8 @@
"source": "root",
"dependencies": [],
"directDependencies": [],
- "devDependencies": []
+ "devDependencies": [],
+ "dependencyConstraints": {}
}
],
"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 6b8ffe1..d7469e3 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
@@ -33,7 +33,8 @@
"source": "root",
"dependencies": [],
"directDependencies": [],
- "devDependencies": []
+ "devDependencies": [],
+ "dependencyConstraints": {}
}
],
"sdks": [
diff --git a/test/workspace_test.dart b/test/workspace_test.dart
index 4df7a91..fad9655 100644
--- a/test/workspace_test.dart
+++ b/test/workspace_test.dart
@@ -538,7 +538,11 @@
"myapp",
"both"
],
- "devDependencies": []
+ "devDependencies": [],
+ "dependencyConstraints": {
+ "myapp": "any",
+ "both": "^1.0.0"
+ }
},
{
"name": "both",
@@ -546,7 +550,8 @@
"kind": "direct",
"source": "hosted",
"dependencies": [],
- "directDependencies": []
+ "directDependencies": [],
+ "dependencyConstraints": {}
},
{
"name": "myapp",
@@ -561,7 +566,11 @@
"both",
"b"
],
- "devDependencies": []
+ "devDependencies": [],
+ "dependencyConstraints": {
+ "both": "^1.0.0",
+ "b": "any"
+ }
},
{
"name": "a",
@@ -579,7 +588,12 @@
],
"devDependencies": [
"both"
- ]
+ ],
+ "dependencyConstraints": {
+ "myapp": "any",
+ "foo": "^1.0.0",
+ "both": "^1.0.0"
+ }
},
{
"name": "foo",
@@ -591,7 +605,10 @@
],
"directDependencies": [
"transitive"
- ]
+ ],
+ "dependencyConstraints": {
+ "transitive": "^1.0.0"
+ }
},
{
"name": "transitive",
@@ -599,7 +616,8 @@
"kind": "transitive",
"source": "hosted",
"dependencies": [],
- "directDependencies": []
+ "directDependencies": [],
+ "dependencyConstraints": {}
}
],
"sdks": [