mirror of
https://github.com/coder/code-server.git
synced 2026-06-03 10:59:33 +00:00
97 lines
2.4 KiB
Bash
Executable File
97 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -Eeuo pipefail
|
|
|
|
# Given versions $1 and $2 figure out the first component that is different
|
|
# (major, minor, patch).
|
|
function find_version_diff() {
|
|
# shellcheck disable=SC2206
|
|
local a=( ${1//./ } )
|
|
# shellcheck disable=SC2206
|
|
local b=( ${2//./ } )
|
|
|
|
if [[ ${a[0]} != "${b[0]}" ]] ; then
|
|
echo major
|
|
elif [[ ${a[1]} != "${b[1]}" ]] ; then
|
|
echo minor
|
|
else
|
|
echo patch
|
|
fi
|
|
}
|
|
|
|
# Bump $1 by the bump type (major, minor, patch) in $2.
|
|
function bump_version() {
|
|
# shellcheck disable=SC2206
|
|
local a=( ${1//./ } )
|
|
case $2 in
|
|
major)
|
|
((a[0]++))
|
|
a[1]=0
|
|
a[2]=0
|
|
;;
|
|
minor)
|
|
((a[1]++))
|
|
a[2]=0
|
|
;;
|
|
*)
|
|
((a[2]++))
|
|
;;
|
|
esac
|
|
echo "${a[0]}.${a[1]}.${a[2]}"
|
|
}
|
|
|
|
function update_helm() {
|
|
local chart_version
|
|
chart_version=$(yq .version ci/helm-chart/Chart.yaml)
|
|
local app_version
|
|
app_version=$(yq .appVersion ci/helm-chart/Chart.yaml)
|
|
local image_version
|
|
image_version=$(yq .image.tag ci/helm-chart/values.yaml)
|
|
|
|
local bump_type
|
|
bump_type=$(find_version_diff "$app_version" "$version")
|
|
local chart_version_bump
|
|
chart_version_bump=$(bump_version "$chart_version" "$bump_type")
|
|
|
|
# Use sed to replace because yq will reformat.
|
|
echo "Bumping version from $chart_version to $chart_version_bump..."
|
|
sed -i.bak "s/^version: $chart_version\$/version: $chart_version_bump/" ci/helm-chart/Chart.yaml
|
|
|
|
echo "Bumping app version from $app_version to $version..."
|
|
sed -i.bak "s/^appVersion: .\+\$/appVersion: $version/" ci/helm-chart/Chart.yaml
|
|
|
|
echo "Bumping image version from $image_version to $version..."
|
|
sed -i.bak "s/^ tag: .\+\$/ tag: '$version'/" ci/helm-chart/values.yaml
|
|
}
|
|
|
|
function update_changelog() {
|
|
local date
|
|
date=$(printf '%(%Y-%m-%d)T\n' -1)
|
|
local link="https://github.com/coder/code-server/releases/tag/v$version"
|
|
sed -i.bak "s|## Unreleased|## Unreleased\n\n## [$version]($link) - $date|" CHANGELOG.md
|
|
}
|
|
|
|
function main() {
|
|
cd "$(dirname "${0}")/../.."
|
|
|
|
source ./ci/lib.sh
|
|
|
|
local version=${VERSION:-$(git describe --tags)}
|
|
version="${version#v}"
|
|
|
|
declare -a steps
|
|
|
|
steps+=(
|
|
"Update Helm chart" "update_helm"
|
|
"Update changelog" "update_changelog"
|
|
)
|
|
|
|
# Even if a step failed, still output the last checkmark.
|
|
run-steps "${steps[@]}" || true
|
|
|
|
# This step is always manual.
|
|
echo "- [ ] https://github.com/coder/code-server-aur/pulls" >> .cache/checklist
|
|
}
|
|
|
|
main "$@"
|