diff --git a/.github/workflows/loop.yml b/.github/workflows/loop.yml index 643ac83..53e5b07 100644 --- a/.github/workflows/loop.yml +++ b/.github/workflows/loop.yml @@ -11,14 +11,29 @@ jobs: with: ref: ${{ github.ref }} - - name: Print all var names before change + - name: Print all var names with values before change run: | - for var in "ALTERNATE_BIOMES" "APOTHEOSIS" "APOTHEOSIS_NEW_GAME_PLUS" "APOTHEOSIS_TUONELA" "NEW_GAME_PLUS_HD" "NIGHTMARE_HD" "NOITAVANIA" "NOITAVANIA_NEW_GAME_PLUS" "PURGATORY" "REGULAR_LEFT_PW" "REGULAR_MAIN_BRANCH" "REGULAR_MIDDLE" "REGULAR_RIGHT_PW"; do - echo "${var}_CACHEKEY" # Placeholder echo, actual dynamic access would need scripting support. + + PROJECT_NAMES=("ALTERNATE_BIOMES" "APOTHEOSIS" "APOTHEOSIS_NEW_GAME_PLUS" "APOTHEOSIS_TUONELA" "NEW_GAME_PLUS_HD" "NIGHTMARE_HD" "NOITAVANIA" "NOITAVANIA_NEW_GAME_PLUS" "PURGATORY" "REGULAR_LEFT_PW" "REGULAR_MAIN_BRANCH" "REGULAR_MIDDLE" "REGULAR_RIGHT_PW") + + # curl get repo variables into $response + response=$(curl -L \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${{ secrets.GH_NOITAMAP_VARS_ACCESS }}" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/repos/acidflow-noita/noitamap/actions/variables) + + for name in "${PROJECT_NAMES[@]}"; do + cachekey_value=$(jq '.variables[] | select(.name == "${name}_CACHEKEY") | .value' <<< $response) + echo "${name}_CACHEKEY=${cachekey_value}" + + done + echo "PROJECT_NAMES='${PROJECT_NAMES[@]}'" >> $GITHUB_ENV - name: Fetch and update cache keys id: fetch_and_update_cache_keys run: | + get_modified_on() { project_name=$1 var_name=${2}_CACHEKEY @@ -26,21 +41,51 @@ jobs: --header "Authorization: Bearer ${{ secrets.CF_PAGES_READ_ALL_API }}" \ --header 'Content-Type: application/json' \ --url "https://api.cloudflare.com/client/v4/accounts/${{ secrets.CF_ACCOUNT_ID }}/pages/projects/${project_name}/deployments") - modified_on=$(echo $response | jq -r '.result[0].modified_on' | date -u -f - +%s) - echo "${var_name}=$modified_on" >> $GITHUB_ENV # Use environment variable to pass dynamic value. + + project_alias=$(jq -r '.result[0].aliases[0]' <<< $response | sed 's#https://##') + modified_on=$(jq -r '.result[0].modified_on' <<< $response | date -u -f - +%s) + echo "${var_name}='${project_alias}=${modified_on}'" >> $GITHUB_ENV # Use environment variable to pass dynamic value. + } + + for name in ${PROJECT_NAMES[@]}; do + CF_PROJECT_NAME=$(echo "$name" | tr '[:upper:]' '[:lower:]' | tr '_' '-') + get_modified_on "$CF_PROJECT_NAME" "$name" + + done + + - name: Github Cachekeys Update + id: gh_cachekeys_update + run: | + + update_modified_on() { + var_name=${1}_CACHEKEY + var_value=${!var_name#*=} + curl -L \ + -X PATCH \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${{ secrets.GH_NOITAMAP_VARS_ACCESS }}" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/repos/acidflow-noita/noitamap/actions/variables/${var_name}\ + -d "{\"name\":\"${var_name}\",\"value\":\"${var_value}\"}" + } - get_modified_on "project1" "ALTERNATE_BIOMES" - get_modified_on "project2" "APOTHEOSIS" - # Add more calls as necessary. + + for name in ${PROJECT_NAMES[@]}; do + + update_modified_on "$name" + done + - name: Update index.html with new cache keys run: | - new_keys=$(env | grep _CACHEKEY | sed 's/=/":"/g; s/^/{ "/; s/$/" },/') - # Assuming new_keys is formatted as JSON objects. Adjust the string manipulation as necessary. + + new_keys=$(env | grep _CACHEKEY | sed 's/^[^=]*=//; s/=/":"/; s/^/"/; s/$/",/') + perl -pi -e "s###s" public/index.html - name: Commit and push changes if any run: | + git config --global user.email "action@github.com" git config --global user.name "GitHub Actions" git add public/index.html