about summary refs log tree commit diff
path: root/pkgs/build-support/dart
diff options
context:
space:
mode:
authorhacker1024 <hacker1024@users.sourceforge.net>2023-04-16 23:16:17 +1000
committerhacker1024 <hacker1024@users.sourceforge.net>2023-04-16 23:16:17 +1000
commit87f809e0c6556126489d5340d8b3d71c4f85f0f1 (patch)
tree78533e7ff726c13373ef413eefb2878dfece9038 /pkgs/build-support/dart
parent4f5dd08fe8a8bf81f636074a99dd4264faf017bb (diff)
dart.list-dart-deps: Add list-dart-deps function
This uses `dart pub deps` (https://dart.dev/tools/pub/cmd/pub-deps) to retrieve information about project dependencies.

It requires a fetch-dart-deps derivation as input.
Diffstat (limited to 'pkgs/build-support/dart')
-rw-r--r--pkgs/build-support/dart/list-dart-deps/default.nix28
1 files changed, 28 insertions, 0 deletions
diff --git a/pkgs/build-support/dart/list-dart-deps/default.nix b/pkgs/build-support/dart/list-dart-deps/default.nix
new file mode 100644
index 0000000000000..5cafd7773d452
--- /dev/null
+++ b/pkgs/build-support/dart/list-dart-deps/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, dart
+, jq
+}:
+deps:
+
+builtins.fromJSON (builtins.readFile (stdenv.mkDerivation {
+  name = "${deps.name}-list.json";
+  nativeBuildInputs = [ deps dart jq ];
+
+  unpackPhase = ''
+    runHook preUnpack
+    ln -s "${deps.files}"/pubspec/* .
+    runHook postUnpack
+  '';
+
+  configurePhase = ''
+    runHook preConfigure
+    dart pub get --offline
+    runHook postConfigure
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+    dart pub deps --json | jq .packages > $out
+    runHook postBuild
+  '';
+}))