blob: 4f33515c5ffab44a894b8e21f937fa4a7c0a4ddd [file] [log] [blame]
#!/bin/bash
# Updates the pinned version of lucicfg to the latest available.
#
# Usage: $ update_lucicfg.sh
set -o errexit
set -o pipefail
function main {
cd "$(dirname "${BASH_SOURCE[0]}")/.."
# Look at the latest version of lucicfg, pull all the git revisions, pick the
# one that comes first alphabetically (to minimize churn since many revisions
# might refer to the same package), and write that to the lucicfg_version
# file.
new_version=$(
cipd describe "infra/tools/luci/lucicfg/\${platform}" -version latest |
grep git_revision |
sort |
head -n1)
new_version="${new_version// /}" # Trim whitespace.
ensure_file="$(pwd)/cipd.ensure"
# Update pinned version in the ensure file. Assumes that the ensure file is
# valid and holds only a single pinned package.
in_place_sed "s/git_revision:\w\{40\}/$new_version/" "$ensure_file"
# Install the new version of lucicfg so we can run `lucicfg version` to get
# the lucicfg tool's semantic version and update the minimum version set by
# `lucicfg.check_version()` in the Starlark code.
lucicfg=$(./scripts/ensure_lucicfg.sh)
semver=$(
"$lucicfg" version |
head -n1 |
sed "s/lucicfg v//"
)
version_file="$(pwd)/config/main.star"
in_place_sed "s/LUCICFG_VERSION = \".*\"/LUCICFG_VERSION = \"$semver\"/" "$version_file"
}
function in_place_sed {
local directive="$1"
local file="$2"
# Unfortunately, it's impossible to do an in-place sed that works on both Mac
# and Linux without creating a backup file.
sed -i.bak "$directive" "$file"
rm "$file.bak"
}
main "$@"