add fix inshallah

This commit is contained in:
2025-10-28 21:52:18 +01:00
parent bce1d8b7b6
commit ace7709b29

View File

@@ -27,12 +27,14 @@ runs:
shell: bash shell: bash
run: | run: |
echo "Discovering all skins in $SKINS_DIR…" echo "Discovering all skins in $SKINS_DIR…"
mapfile -t skins < <( temp_discover="/tmp/discover_skins_$RANDOM.txt"
find "$SKINS_DIR" -mindepth 1 -maxdepth 1 -type d \ find "$SKINS_DIR" -mindepth 1 -maxdepth 1 -type d \
| sed 's|'"$SKINS_DIR"'/||' | sed 's|'"$SKINS_DIR"'/||' > "$temp_discover"
) mapfile -t skins < "$temp_discover"
rm -f "$temp_discover"
json=$(printf '%s\n' "${skins[@]}" | jq -R . | jq -cs .) json=""
json="$(printf '%s\n' "${skins[@]}" | jq -R . | jq -cs .)"
{ {
echo "all_skins<<EOF" echo "all_skins<<EOF"
@@ -44,11 +46,12 @@ runs:
id: detect id: detect
shell: bash shell: bash
run: | run: |
set -e
echo "[Detect Changed Skin Directories Started]" echo "[Detect Changed Skin Directories Started]"
# Parse JSON back into Bash array - using a temp file to avoid process substitution issues # Parse JSON back into Bash array - avoid command substitution with parentheses
all_skins_json='${{ steps.discover_all.outputs.all_skins }}' all_skins_json='${{ steps.discover_all.outputs.all_skins }}'
temp_skins_file=$(mktemp) temp_skins_file="/tmp/all_skins_$RANDOM.txt"
printf '%s' "$all_skins_json" | jq -r '.[]' > "$temp_skins_file" printf '%s' "$all_skins_json" | jq -r '.[]' > "$temp_skins_file"
mapfile -t all_skins < "$temp_skins_file" mapfile -t all_skins < "$temp_skins_file"
rm -f "$temp_skins_file" rm -f "$temp_skins_file"
@@ -78,27 +81,34 @@ runs:
else else
echo "→ No rebuild flags set. Finding latest git tag..." echo "→ No rebuild flags set. Finding latest git tag..."
latest_tag=$(git tag --sort=-creatordate | head -n 1 || true) git tag --sort=-creatordate | head -n 1 > /tmp/latest_tag_$RANDOM.txt || true
latest_tag=""
if [ -s /tmp/latest_tag_$RANDOM.txt ]; then
latest_tag="$(cat /tmp/latest_tag_$RANDOM.txt)"
rm -f /tmp/latest_tag_$RANDOM.txt
fi
if [[ -n "$latest_tag" ]]; then if [[ -n "$latest_tag" ]]; then
echo "→ Latest tag found: $latest_tag" echo "→ Latest tag found: $latest_tag"
echo "→ Finding added/modified skins since $latest_tag…" echo "→ Finding added/modified skins since $latest_tag…"
mapfile -t skins < <( temp_skins_am="/tmp/skins_am_$RANDOM.txt"
git diff --name-only -z --diff-filter=AM "$latest_tag" HEAD \ git diff --name-only -z --diff-filter=AM "$latest_tag" HEAD \
| while IFS= read -r -d '' file; do | while IFS= read -r -d '' file; do
[[ $file == Skins/* ]] && echo "${file#Skins/}" | cut -d/ -f1 [[ $file == Skins/* ]] && echo "${file#Skins/}" | cut -d/ -f1
done | sort -u done | sort -u > "$temp_skins_am"
) mapfile -t skins < "$temp_skins_am"
rm -f "$temp_skins_am"
echo " ✓ Found ${#skins[@]} added/modified skins" echo " ✓ Found ${#skins[@]} added/modified skins"
echo "→ Finding deleted skins since $latest_tag…" echo "→ Finding deleted skins since $latest_tag…"
mapfile -t deleted_skins < <( temp_skins_del="/tmp/skins_del_$RANDOM.txt"
git diff --name-only -z --diff-filter=D "$latest_tag" HEAD \ git diff --name-only -z --diff-filter=D "$latest_tag" HEAD \
| while IFS= read -r -d '' file; do | while IFS= read -r -d '' file; do
[[ $file == Skins/* ]] && echo "${file#Skins/}" | cut -d/ -f1 [[ $file == Skins/* ]] && echo "${file#Skins/}" | cut -d/ -f1
done | sort -u done | sort -u > "$temp_skins_del"
) mapfile -t deleted_skins < "$temp_skins_del"
rm -f "$temp_skins_del"
if [ "${#deleted_skins[@]}" -gt 0 ]; then if [ "${#deleted_skins[@]}" -gt 0 ]; then
for d in "${deleted_skins[@]}"; do for d in "${deleted_skins[@]}"; do
echo "→ Skin '$d' was deleted" echo "→ Skin '$d' was deleted"
@@ -125,7 +135,7 @@ runs:
echo "" echo ""
echo "[Writing Changed Skins to File]" echo "[Writing Changed Skins to File]"
changed_skins_file=$(mktemp) changed_skins_file="/tmp/changed_skins_$RANDOM.txt"
if [ "${#uniq_skins[@]}" -eq 0 ]; then if [ "${#uniq_skins[@]}" -eq 0 ]; then
echo "→ No added/modified skins detected." echo "→ No added/modified skins detected."