82 lines
2.0 KiB
Bash
82 lines
2.0 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
usage() {
|
|
cat <<'USAGE'
|
|
Usage:
|
|
scripts/generate-release-lock.sh [options]
|
|
|
|
Generates webui/package-lock.release.json from webui/package.release.json in a
|
|
temporary workspace. The normal development package.json and package-lock.json
|
|
are left untouched.
|
|
|
|
Run this after the module git tags referenced by package.release.json exist and
|
|
are reachable, and before tagging the core release commit that should contain
|
|
the regenerated release lockfile.
|
|
|
|
Options:
|
|
--npm <path> npm executable to use.
|
|
-h, --help Show this help.
|
|
USAGE
|
|
}
|
|
|
|
fail() {
|
|
echo "error: $*" >&2
|
|
exit 1
|
|
}
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
WEBUI="$ROOT/webui"
|
|
NPM_BIN="${NPM:-}"
|
|
|
|
if [[ -z "$NPM_BIN" ]]; then
|
|
if [[ -x "/home/zemion/.nvm/versions/node/v22.22.3/bin/npm" ]]; then
|
|
NPM_BIN="/home/zemion/.nvm/versions/node/v22.22.3/bin/npm"
|
|
else
|
|
NPM_BIN="npm"
|
|
fi
|
|
fi
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--npm)
|
|
[[ $# -ge 2 ]] || fail "missing value for $1"
|
|
NPM_BIN="$2"
|
|
shift 2
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown argument: $1" >&2
|
|
usage >&2
|
|
exit 2
|
|
;;
|
|
esac
|
|
done
|
|
|
|
[[ -f "$WEBUI/package.release.json" ]] || fail "missing $WEBUI/package.release.json"
|
|
command -v "$NPM_BIN" >/dev/null 2>&1 || fail "npm executable not found: $NPM_BIN"
|
|
|
|
TMP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/govoplan-release-lock.XXXXXXXX")"
|
|
cleanup() {
|
|
rm -rf "$TMP_DIR"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
cp "$WEBUI/package.release.json" "$TMP_DIR/package.json"
|
|
if [[ -f "$WEBUI/package-lock.release.json" ]]; then
|
|
cp "$WEBUI/package-lock.release.json" "$TMP_DIR/package-lock.json"
|
|
fi
|
|
|
|
echo "Generating release lockfile from $WEBUI/package.release.json"
|
|
echo "Temporary workspace: $TMP_DIR"
|
|
(
|
|
cd "$TMP_DIR"
|
|
PATH="$(dirname "$NPM_BIN"):$PATH" "$NPM_BIN" install --package-lock-only --ignore-scripts
|
|
)
|
|
|
|
cp "$TMP_DIR/package-lock.json" "$WEBUI/package-lock.release.json"
|
|
echo "Updated $WEBUI/package-lock.release.json"
|