From 3e84674bb9b3707f059fb46d213712050a2abd36 Mon Sep 17 00:00:00 2001 From: Arlind Date: Sun, 8 Jun 2025 23:17:23 +0200 Subject: [PATCH] Update .gitea/workflows/ci.yml --- .gitea/workflows/ci.yml | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 7b07433..cabe1f0 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -178,32 +178,45 @@ jobs: - name: Check for Duplicate skin.ini Names shell: bash run: | + set -euo pipefail echo "[Duplicate Skin Name Check Started]" + # Ensure DANSER_SKINS_DIR is set and valid + if [ -z "${DANSER_SKINS_DIR:-}" ] || [ ! -d "${DANSER_SKINS_DIR}" ]; then + echo "DANSER_SKINS_DIR is not set or is not a directory. Exiting." + exit 1 + fi + sanitize_filename() { - echo "$1" \ + local filename="$1" + echo "$filename" \ | sed -e 's#[\\/:\*\?"<>|]#-#g' -e 's#%#_#g' \ | tr -s ' ' \ | sed 's/^ *//;s/ *$//' } - declare -A name_counts + declare -A name_counts=() duplicates=() - for dir in "$DANSER_SKINS_DIR"/*; do + shopt -s nullglob + for dir in "${DANSER_SKINS_DIR}"/*; do [ -d "$dir" ] || continue + name=$(basename "$dir" | tr -d $'\r\n') - ini=$(find "$dir" -maxdepth 1 -iname "skin.ini" | head -n1) + + ini=$(find "$dir" -maxdepth 1 -iname "skin.ini" | head -n1 || true) if [ -f "$ini" ]; then line=$(grep -i '^[[:space:]]*Name:' "$ini" | head -n1) - if [ -n "$line" ]; then + if [ -n "${line:-}" ]; then val="${line#*:}" val=$(echo "$val" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') name=$(sanitize_filename "$val") fi fi + name_counts["$name"]=$(( ${name_counts["$name"]:-0} + 1 )) done + shopt -u nullglob for name in "${!name_counts[@]}"; do if [ "${name_counts[$name]}" -gt 1 ]; then @@ -214,6 +227,7 @@ jobs: if [ "${#duplicates[@]}" -gt 0 ]; then echo "⚠️ Duplicate skin.ini Names found:" printf ' • %s\n' "${duplicates[@]}" + exit 1 else echo "✓ No duplicate skin.ini Names detected." fi