Add Hugo upgrade script
This commit is contained in:
46
bin/upgrade
Executable file
46
bin/upgrade
Executable file
@@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
root_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
build_file="$root_dir/.build.yml"
|
||||||
|
|
||||||
|
if ! command -v hugo >/dev/null 2>&1; then
|
||||||
|
echo "hugo not found in PATH" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
hugo_version_raw="$(hugo version)"
|
||||||
|
hugo_version="$(printf '%s\n' "$hugo_version_raw" | sed -E 's/^hugo v?([0-9]+\.[0-9]+\.[0-9]+).*/\1/')"
|
||||||
|
if [[ -z "$hugo_version" || "$hugo_version" == "$hugo_version_raw" ]]; then
|
||||||
|
echo "Unable to parse hugo version from: $hugo_version_raw" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
current_version="$(rg -n "HUGO_VERSION:" "$build_file" | sed -E 's/.*HUGO_VERSION:[[:space:]]*//')"
|
||||||
|
if [[ -z "$current_version" ]]; then
|
||||||
|
echo "Unable to read HUGO_VERSION from $build_file" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$hugo_version" == "$current_version" ]]; then
|
||||||
|
echo "Hugo already at $hugo_version"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
python3 - <<PY
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
path = Path("$build_file")
|
||||||
|
data = path.read_text()
|
||||||
|
old = "$current_version"
|
||||||
|
new = "$hugo_version"
|
||||||
|
needle = f"HUGO_VERSION: {old}"
|
||||||
|
if needle not in data:
|
||||||
|
raise SystemExit("Expected HUGO_VERSION not found in .build.yml")
|
||||||
|
path.write_text(data.replace(needle, f"HUGO_VERSION: {new}", 1))
|
||||||
|
PY
|
||||||
|
|
||||||
|
git add "$build_file"
|
||||||
|
git commit -m "Upgrade Hugo to $hugo_version"
|
||||||
|
|
||||||
|
echo "Updated HUGO_VERSION from $current_version to $hugo_version"
|
||||||
Reference in New Issue
Block a user