diff options
author | hacker1024 <hacker1024@users.sourceforge.net> | 2023-10-26 19:30:23 +1100 |
---|---|---|
committer | FlafyDev <flafyarazi@gmail.com> | 2023-12-26 17:08:51 +0200 |
commit | d41348a68a130b5358740e394f50d7fb5fc69838 (patch) | |
tree | fd2bc308c013870eff5f0af0c907271f03b861ef /pkgs/build-support/dart | |
parent | 92809a1cc5fb50d706a01ff232128ca9421f4584 (diff) |
dartHooks.dartConfigHook: Add packageRun utility
Diffstat (limited to 'pkgs/build-support/dart')
-rw-r--r-- | pkgs/build-support/dart/build-dart-application/hooks/dart-config-hook.sh | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/pkgs/build-support/dart/build-dart-application/hooks/dart-config-hook.sh b/pkgs/build-support/dart/build-dart-application/hooks/dart-config-hook.sh index 81e87c651755d..a4d2809c44b82 100644 --- a/pkgs/build-support/dart/build-dart-application/hooks/dart-config-hook.sh +++ b/pkgs/build-support/dart/build-dart-application/hooks/dart-config-hook.sh @@ -10,6 +10,36 @@ dartConfigHook() { mkdir -p .dart_tool cp "$packageConfig" .dart_tool/package_config.json + # Runs a Dart executable from a package. + # + # Usage: + # packageRun <package> [executable] [bin_dir] + # + # By default, [bin_dir] is "bin", and [executable] is <package>. + # i.e. `packageRun build_runner` is equivalent to `packageRun build_runner build_runner bin`, which runs `bin/build_runner.dart` from the build_runner package. + packageRun() { + local args=() + local passthrough=() + + while [ $# -gt 0 ]; do + if [ "$1" != "--" ]; then + args+=("$1") + shift + else + shift + passthrough=("$@") + break + fi + done + + local name="${args[0]}" + local path="${args[1]:-$name}" + local prefix="${args[2]:-bin}" + + local packagePath="$(jq --raw-output --arg name "$name" '.packages.[] | select(.name == $name) .rootUri | sub("file://"; "")' .dart_tool/package_config.json)" + dart --packages=.dart_tool/package_config.json "$packagePath/$prefix/$path.dart" "${passthrough[@]}" + } + echo "Generating the dependency list" dart pub deps --json | @jq@ .packages > deps.json |