65 lines
1.3 KiB
Nix
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
|
|
'';
|
|
}
|