Files
2026-04-21 03:08:44 +02:00

65 lines
1.3 KiB
Nix

{
writeShellApplication,
common-updater-scripts,
nix-update,
yq-go,
dart,
nix,
}:
let
name = "update-webdev";
packageName = "webdev";
packageDir = toString ./.;
in
writeShellApplication {
inherit name;
runtimeInputs = [
common-updater-scripts
nix-update
yq-go
dart
nix
];
text = ''
pname="''${UPDATE_NIX_PNAME:-${packageName}}"
main() {
old_version="''${UPDATE_NIX_OLD_VERSION:-$(get_version)}"
nix-update "$pname" --version stable --version-regex "$pname-v([0-9.]+(:?\\+[0-9]+)?)"
new_version=$(get_version)
if [[ "$new_version" == "$old_version" ]]; then
exit 0
fi
generate_lockfile
}
get_version() {
nix-instantiate --raw --eval --strict -A "$pname.version"
}
generate_lockfile() {
tmp_dir=$(mktemp -d)
trap 'rm -rf "$tmp_dir"' EXIT
src=$(nix-build --no-link . -A "$pname.src")
cp -r "$src/$pname/." "$tmp_dir/"
chmod -R +w "$tmp_dir"
cd "$tmp_dir"
# Remove dev_dependencies as in the nix build
yq -i 'del(.dev_dependencies)' pubspec.yaml
# Generate lockfile because it's not included in the source
if ! test -f pubspec.lock; then
dart pub get
fi
# Convert to JSON
yq -o=json . pubspec.lock > "${packageDir}/pubspec.lock.json"
}
main
'';
}