diff --git a/hack/build-repo.sh b/hack/build-repo.sh new file mode 100755 index 00000000..434bd5b4 --- /dev/null +++ b/hack/build-repo.sh @@ -0,0 +1,37 @@ +#!/bin/sh +set -e + +REPO_NAME="$(basename "$PWD")" +OUT="../../_out/repos/$REPO_NAME" +TMP="../../_out/repos/$REPO_NAME/historical" + +if [ ! -f "versions_map" ]; then + echo "Script should be called from packages/!" >&2 + exit 1 +fi + +(set -x; rm -rf "$OUT") +(set -x; mkdir -p "$OUT") + +while read chart version commit; do + if [ $commit = "HEAD" ]; then + (set -x; helm package -d "$OUT" "$chart") + continue + fi + mkdir -p "$TMP/$chart-$version" + (set -x; git archive "$commit" "$chart" | tar -xf- --strip-components=1 -C "$TMP/$chart-$version") + + if [ -d "$TMP/$chart-$version/charts" ]; then + (set -x; find "$TMP/$chart-$version/charts" -type l -maxdepth 1 -mindepth 1) | awk -F/ '{print $NF}' | while read library_chart; do + (set -x; rm -f "$TMP/$chart-$version/charts/$library_chart") + (set -x; cd ../library && git archive "$commit" "$library_chart" | tar -xf- -C "$TMP/$chart-$version/charts/") + done + fi + rm -rf "$tmp" +done < versions_map + +(set -x; helm package -d "$OUT" $(find . "$TMP" -mindepth 2 -maxdepth 2 -name Chart.yaml | awk 'sub("/Chart.yaml", "")' | sort -V)) + +(set -x; cd "$OUT" && helm repo index . --url "http://cozystack.cozy-system.svc/repos/$REPO_NAME") + +(set -x; rm -rf "$TMP") diff --git a/packages/apps/Makefile b/packages/apps/Makefile index 506c8750..9243702a 100644 --- a/packages/apps/Makefile +++ b/packages/apps/Makefile @@ -1,14 +1,5 @@ -OUT=../../_out/repos/apps -TMP=../../_out/repos/apps/historical - repo: - rm -rf "$(OUT)" - mkdir -p "$(OUT)" - awk '$$3 != "HEAD" {print "mkdir -p $(TMP)/" $$1 "-" $$2}' versions_map | sh -ex - awk '$$3 != "HEAD" {print "git archive " $$3 " " $$1 " | tar -xf- --strip-components=1 -C $(TMP)/" $$1 "-" $$2 }' versions_map | sh -ex - helm package -d "$(OUT)" $$(find . $(TMP) -mindepth 2 -maxdepth 2 -name Chart.yaml | awk 'sub("/Chart.yaml", "")' | sort -V) - cd "$(OUT)" && helm repo index . --url http://cozystack.cozy-system.svc/repos/apps - rm -rf "$(TMP)" + ../../hack/build-repo.sh fix-chartnames: find . -maxdepth 2 -name Chart.yaml | awk -F/ '{print $$2}' | while read i; do sed -i "s/^name: .*/name: $$i/" "$$i/Chart.yaml"; done diff --git a/packages/extra/Makefile b/packages/extra/Makefile index 5586c59e..9aa192d1 100644 --- a/packages/extra/Makefile +++ b/packages/extra/Makefile @@ -1,14 +1,5 @@ -OUT=../../_out/repos/extra -TMP=../../_out/repos/extra/historical - repo: - rm -rf "$(OUT)" - mkdir -p "$(OUT)" - awk '$$3 != "HEAD" {print "mkdir -p $(TMP)/" $$1 "-" $$2}' versions_map | sh -ex - awk '$$3 != "HEAD" {print "git archive " $$3 " " $$1 " | tar -xf- --strip-components=1 -C $(TMP)/" $$1 "-" $$2 }' versions_map | sh -ex - helm package -d "$(OUT)" $$(find . $(TMP) -mindepth 2 -maxdepth 2 -name Chart.yaml | awk 'sub("/Chart.yaml", "")' | sort -V) - cd "$(OUT)" && helm repo index . --url http://cozystack.cozy-system.svc/repos/extra - rm -rf "$(TMP)" + ../../hack/build-repo.sh fix-chartnames: find . -maxdepth 2 -name Chart.yaml | awk -F/ '{print $$2}' | while read i; do sed -i "s/^name: .*/name: $$i/" "$$i/Chart.yaml"; done