116 lines
4.8 KiB
Bash
Executable File
116 lines
4.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
# Designed to ensure the appversion in Chart.yaml is in sync with the primary Chart tag if found
|
|
# Also makes sure that home link is pointing to the correct url
|
|
sync_tag() {
|
|
local chart="$1"
|
|
local chartname="$2"
|
|
local train="$3"
|
|
local chartversion="$4"
|
|
echo "Attempting to sync primary tag with appversion for: ${chartname}"
|
|
local tag="$(cat ${chart}/values.yaml | grep '^ tag: ' | awk -F" " '{ print $2 }' | head -1)"
|
|
tag="${tag%%@*}"
|
|
tag="${tag:-auto}"
|
|
tag=$(echo $tag | sed "s/release-//g")
|
|
tag=$(echo $tag | sed "s/release_//g")
|
|
tag=$(echo $tag | sed "s/version-//g")
|
|
tag=$(echo $tag | sed "s/version_//g")
|
|
tag="${tag#*V.}"
|
|
tag="${tag#*v-}"
|
|
tag="${tag#*v}"
|
|
tag="${tag%-*}"
|
|
tag="${tag:0:10}"
|
|
tag="${tag%-}"
|
|
tag="${tag%_}"
|
|
tag="${tag%.}"
|
|
echo "Updating tag of ${chartname} to ${tag}..."
|
|
sed -i -e "s|appVersion: .*|appVersion: \"${tag}\"|" "${chart}/Chart.yaml"
|
|
echo "Updating icon of ${chartname}..."
|
|
sed -i -e "s|icon: .*|icon: https:\/\/truecharts.org\/img\/hotlink-ok\/chart-icons\/${chartname}.png|" "${chart}/Chart.yaml"
|
|
echo "Updating home of ${chartname}..."
|
|
sed -i -e "s|home: .*|home: https:\/\/truecharts.org\/docs\/charts\/${train}\/${chartname}|" "${chart}/Chart.yaml"
|
|
echo "Attempting to update sources of ${chartname}..."
|
|
echo "Using go-yq verion: <$(go-yq -V)>"
|
|
# Get all sources (except truecharts)
|
|
curr_sources=$(go-yq '.sources[] | select(. != "https://github.com/truecharts*")' "${chart}/Chart.yaml")
|
|
# Empty sources list in-place
|
|
go-yq -i 'del(.sources.[])' "${chart}/Chart.yaml"
|
|
# Add truechart source
|
|
tcsource="https://github.com/truecharts/charts/tree/master/charts/$train/$chartname" go-yq -i '.sources += env(tcsource)' "${chart}/Chart.yaml"
|
|
# Add the rest of the sources
|
|
while IFS= read -r line; do
|
|
src="$line" go-yq -i '.sources += env(src)' "${chart}/Chart.yaml"
|
|
done <<< "$curr_sources"
|
|
echo "Sources of ${chartname} updated!"
|
|
}
|
|
export -f sync_tag
|
|
|
|
sync_helmignore() {
|
|
local chart="$1"
|
|
local chartname="$2"
|
|
local train="$3"
|
|
local chartversion="$4"
|
|
echo "Attempting to sync HelmIgnore file for: ${chartname}"
|
|
rm -rf ${chart}/.helmignore
|
|
cp templates/chart/.helmignore ${chart}/
|
|
}
|
|
export -f sync_helmignore
|
|
|
|
create_changelog() {
|
|
local chart="$1"
|
|
local chartname="$2"
|
|
local train="$3"
|
|
local chartversion="$4"
|
|
local prevversion="$(git tag -l "${chartname}-*" --sort=-v:refname | head -n 1)"
|
|
echo "Generating changelogs for: ${chartname}"
|
|
# SCALE "Changelog" containing only last change
|
|
git-chglog --next-tag ${chartname}-${chartversion} --tag-filter-pattern ${chartname} --path ${chart} -o ${chart}/app-changelog.md ${chartname}-${chartversion}
|
|
# Append SCALE changelog to actual changelog
|
|
|
|
if [[ -f "${chart}/CHANGELOG.md" ]]; then
|
|
true
|
|
else
|
|
touch ${chart}/CHANGELOG.md
|
|
fi
|
|
sed -i '1d' ${chart}/CHANGELOG.md
|
|
cat ${chart}/app-changelog.md | cat - ${chart}/CHANGELOG.md > temp && mv temp ${chart}/CHANGELOG.md
|
|
sed -i '1s/^/# Changelog\n\n/' ${chart}/CHANGELOG.md
|
|
rm ${chart}/app-changelog.md || echo "changelog not found..."
|
|
}
|
|
export -f create_changelog
|
|
|
|
generate_docs() {
|
|
local chart="$1"
|
|
local chartname="$2"
|
|
local train="$3"
|
|
local chartversion="$4"
|
|
echo "Generating Docs"
|
|
helm-docs \
|
|
--ignore-file=".helmdocsignore" \
|
|
--output-file="README.md" \
|
|
--template-files="/__w/charts/charts/templates/docs/README.md.gotmpl" \
|
|
--chart-search-root="${chart}"
|
|
sed -i "s/TRAINPLACEHOLDER/${train}/" "${chart}/README.md"
|
|
}
|
|
export -f generate_docs
|
|
|
|
|
|
if [[ -d "charts/${1}" ]]; then
|
|
echo "Start processing charts/${1} ..."
|
|
chartversion=$(cat charts/${1}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }')
|
|
chartname=$(basename charts/${1})
|
|
train=$(basename $(dirname "charts/${1}"))
|
|
SCALESUPPORT=$(cat charts/${1}/Chart.yaml | yq '.annotations."truecharts.org/SCALE-support"' -r)
|
|
sync_helmignore "charts/${1}" "${chartname}" "$train" "${chartversion}" || echo "Syncing HelmIgnore file failed..."
|
|
helm dependency update "charts/${1}" --skip-refresh || (sleep 10 && helm dependency update "charts/${1}" --skip-refresh) || (sleep 10 && helm dependency update "charts/${1}" --skip-refresh)
|
|
sync_tag "charts/${1}" "${chartname}" "$train" "${chartversion}" || echo "Tag sync failed..."
|
|
create_changelog "charts/${1}" "${chartname}" "$train" "${chartversion}" || echo "changelog generation failed..."
|
|
generate_docs "charts/${1}" "${chartname}" "$train" "${chartversion}" || echo "Docs generation failed..."
|
|
else
|
|
echo "Chart 'charts/${1}' no longer exists in repo. Skipping it..."
|
|
fi
|
|
echo "Done processing charts/${1} ..."
|