mirror of
https://github.com/outbackdingo/cozystack.git
synced 2026-03-21 17:41:21 +00:00
66 lines
2.1 KiB
Bash
Executable File
66 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
usage() {
|
|
printf "%s\n" "Usage:" >&2 ;
|
|
printf -- "%s\n" '---' >&2 ;
|
|
printf "%s %s\n" "$0" "INPUT_DIR OUTPUT_DIR TMP_DIR [DEPENDENCY_DIR]" >&2 ;
|
|
printf -- "%s\n" '---' >&2 ;
|
|
printf "%s\n" "Takes a helm repository from INPUT_DIR, with an optional library repository in" >&2 ;
|
|
printf "%s\n" "DEPENDENCY_DIR, prepares a view of the git archive at select points in history" >&2 ;
|
|
printf "%s\n" "in TMP_DIR and packages helm charts, outputting the tarballs to OUTPUT_DIR" >&2 ;
|
|
}
|
|
|
|
if [ "x$(basename $PWD)" != "xpackages" ]
|
|
then
|
|
echo "Error: This script must run from the ./packages/ directory" >&2
|
|
echo >&2
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
if [ "x$#" != "x3" ] && [ "x$#" != "x4" ]
|
|
then
|
|
echo "Error: This script takes 3 or 4 arguments" >&2
|
|
echo "Got $# arguments:" "$@" >&2
|
|
echo >&2
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
input_dir=$1
|
|
output_dir=$2
|
|
tmp_dir=$3
|
|
|
|
if [ "x$#" = "x4" ]
|
|
then
|
|
dependency_dir=$4
|
|
fi
|
|
|
|
rm -rf "${output_dir:?}"
|
|
mkdir -p "${output_dir}"
|
|
while read package _ commit
|
|
do
|
|
# this lets devs build the packages from a dirty repo for quick local testing
|
|
if [ "x$commit" = "xHEAD" ]
|
|
then
|
|
helm package "${input_dir}/${package}" -d "${output_dir}"
|
|
continue
|
|
fi
|
|
git archive --format tar "${commit}" "${input_dir}/${package}" | tar -xf- -C "${tmp_dir}/"
|
|
|
|
# the library chart is not present in older commits and git archive doesn't fail gracefully if the path is not found
|
|
if [ "x${dependency_dir}" != "x" ] && git ls-tree --name-only "${commit}" "${dependency_dir}" | grep -qx "${dependency_dir}"
|
|
then
|
|
git archive --format tar "${commit}" "${dependency_dir}" | tar -xf- -C "${tmp_dir}/"
|
|
fi
|
|
helm package "${tmp_dir}/${input_dir}/${package}" -d "${output_dir}"
|
|
rm -rf "${tmp_dir:?}/${input_dir:?}/${package:?}"
|
|
if [ "x${dependency_dir}" != "x" ]
|
|
then
|
|
rm -rf "${tmp_dir:?}/${dependency_dir:?}"
|
|
fi
|
|
done < "${input_dir}/versions_map"
|
|
helm repo index "${output_dir}"
|