2024-02-29 18:54:21 +00:00
|
|
|
#!/bin/bash
|
2025-01-28 05:51:33 +00:00
|
|
|
while getopts c:d:v: opt; do
|
|
|
|
case ${opt} in
|
|
|
|
c) chart=${OPTARG} ;;
|
|
|
|
d) dependency_name=${OPTARG} ;;
|
|
|
|
v) dependency_version=${OPTARG} ;;
|
|
|
|
*)
|
|
|
|
echo 'Usage:' >&2
|
|
|
|
echo '-c: chart Related Helm chart name' >&2
|
|
|
|
echo '-d dependency Name of the updated dependency' >&2
|
|
|
|
echo '-v version New version of the updated dependency' >&2
|
|
|
|
exit 1
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
|
|
if [ -z "${dependency_name}" ] || [ -z "${dependency_version}" ] || [ -z "${chart}" ] ; then
|
|
|
|
echo 'Missing relevant CLI flag(s).' >&2
|
2024-02-29 18:54:21 +00:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2025-01-28 05:51:33 +00:00
|
|
|
chart_yaml_path="charts/${chart}/Chart.yaml"
|
|
|
|
# Split dependency by '/' and only use last element
|
|
|
|
# This way we can drop prefixes like "argoproj/..." , "argoproj-labs/..." , "quay.io/foo/..."
|
|
|
|
dependency_name="${dependency_name##*/}"
|
2024-02-29 18:54:21 +00:00
|
|
|
|
|
|
|
# Bump the chart version by one patch version
|
2025-01-28 05:51:33 +00:00
|
|
|
version=$(grep '^version:' "${chart_yaml_path}" | awk '{print $2}')
|
2024-02-29 18:54:21 +00:00
|
|
|
major=$(echo "${version}" | cut -d. -f1)
|
|
|
|
minor=$(echo "${version}" | cut -d. -f2)
|
|
|
|
patch=$(echo "${version}" | cut -d. -f3)
|
|
|
|
patch=$((patch + 1))
|
2025-01-28 05:51:33 +00:00
|
|
|
sed -i "s/^version:.*/version: ${major}.${minor}.${patch}/g" "${chart_yaml_path}"
|
2024-02-29 18:54:21 +00:00
|
|
|
|
|
|
|
# Add a changelog entry
|
2025-01-28 05:51:33 +00:00
|
|
|
sed -i -e '/^ artifacthub.io\/changes: |/,$ d' "${chart_yaml_path}"
|
2024-02-29 18:54:21 +00:00
|
|
|
{
|
|
|
|
echo " artifacthub.io/changes: |"
|
|
|
|
echo " - kind: changed"
|
2025-01-28 05:51:33 +00:00
|
|
|
echo " description: Bump ${dependency_name} to ${dependency_version}"
|
|
|
|
} >> "${chart_yaml_path}"
|
|
|
|
cat "${chart_yaml_path}"
|