diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index ede4556..7b07433 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -174,6 +174,52 @@ jobs: mv "$SKINS_DIR"/* "$DANSER_SKINS_DIR" echo "Skin files moved." + + - name: Check for Duplicate skin.ini Names + shell: bash + run: | + echo "[Duplicate Skin Name Check Started]" + + sanitize_filename() { + echo "$1" \ + | sed -e 's#[\\/:\*\?"<>|]#-#g' -e 's#%#_#g' \ + | tr -s ' ' \ + | sed 's/^ *//;s/ *$//' + } + + declare -A name_counts + duplicates=() + + 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) + if [ -f "$ini" ]; then + line=$(grep -i '^[[:space:]]*Name:' "$ini" | head -n1) + 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 + + for name in "${!name_counts[@]}"; do + if [ "${name_counts[$name]}" -gt 1 ]; then + duplicates+=("$name (${name_counts[$name]} skins)") + fi + done + + if [ "${#duplicates[@]}" -gt 0 ]; then + echo "⚠️ Duplicate skin.ini Names found:" + printf ' • %s\n' "${duplicates[@]}" + else + echo "✓ No duplicate skin.ini Names detected." + fi + + echo "[Duplicate Skin Name Check Completed]" + - name: Generate Danser videos and screenshots shell: bash run: |