57 lines
1.7 KiB
Bash
Executable File
57 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env nix-shell
|
|
#!nix-shell -i bash -p coreutils jq yq-go git nix-prefetch-github common-updater-scripts dart
|
|
|
|
set -euo pipefail
|
|
|
|
PACKAGE_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
|
NIX_FILE="$PACKAGE_DIR/package.nix"
|
|
|
|
echo "Checking for latest serverpod version..."
|
|
latest_version=$(git ls-remote --tags https://github.com/serverpod/serverpod.git | \
|
|
grep -v "\^{}" | \
|
|
cut -f2 | \
|
|
sed 's/refs\/tags\///' | \
|
|
grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | \
|
|
sort -V | \
|
|
tail -n 1)
|
|
|
|
current_version=$(sed -n 's/^[[:space:]]*version = "\(.*\)";/\1/p' "$NIX_FILE")
|
|
|
|
if [[ "$latest_version" == "$current_version" ]]; then
|
|
echo "serverpod_cli is already up to date ($current_version)"
|
|
exit 0
|
|
fi
|
|
|
|
echo "Updating serverpod_cli from $current_version to $latest_version"
|
|
|
|
echo "Prefetching source for $latest_version..."
|
|
PREFETCH_OUT=$(nix-prefetch-github serverpod serverpod --rev "$latest_version")
|
|
echo "Prefetch output: $PREFETCH_OUT"
|
|
new_hash=$(echo "$PREFETCH_OUT" | jq -r .hash)
|
|
echo "New hash: $new_hash"
|
|
|
|
update-source-version serverpod_cli "$latest_version" "$new_hash" --version-key=version --file="$NIX_FILE"
|
|
|
|
echo "Generating fresh pubspec.lock.json..."
|
|
TMPDIR=$(mktemp -d)
|
|
trap 'rm -rf "$TMPDIR"' EXIT
|
|
|
|
src=$(nix-build --no-link . -A serverpod_cli.src)
|
|
|
|
cp -r "$src/tools/serverpod_cli/"* "$TMPDIR/"
|
|
chmod -R +w "$TMPDIR"
|
|
cd "$TMPDIR"
|
|
|
|
# Remove dependency_overrides as in the nix build
|
|
yq -i 'del(.dependency_overrides)' 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 > "$PACKAGE_DIR/pubspec.lock.json"
|
|
|
|
echo "Update complete: $current_version -> $latest_version"
|