Update .gitea/workflows/ci.yml
This commit is contained in:
@@ -241,79 +241,6 @@ jobs:
|
||||
mv "$SKINS_DIR"/* "$DANSER_SKINS_DIR"
|
||||
echo "Skin files moved."
|
||||
|
||||
|
||||
- name: Check for Duplicate skin.ini Names
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
echo "[Duplicate Skin Name Check Started]"
|
||||
|
||||
# Guard: ensure DANSER_SKINS_DIR is set and exists
|
||||
if [ -z "${DANSER_SKINS_DIR:-}" ] || [ ! -d "${DANSER_SKINS_DIR}" ]; then
|
||||
echo "DANSER_SKINS_DIR is not set or not a directory. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sanitize_filename() {
|
||||
local filename="$1"
|
||||
echo "$filename" \
|
||||
| sed -e 's#[\\/:\*\?"<>|]#-#g' -e 's#%#_#g' \
|
||||
| tr -s ' ' \
|
||||
| sed 's/^ *//;s/ *$//'
|
||||
}
|
||||
|
||||
declare -A name_counts=()
|
||||
declare -A name_dirs=()
|
||||
duplicates=()
|
||||
|
||||
shopt -s nullglob
|
||||
for dir in "${DANSER_SKINS_DIR}"/*; do
|
||||
[ -d "$dir" ] || continue
|
||||
|
||||
dir_base=$(basename "$dir" | tr -d $'\r\n')
|
||||
name="$dir_base"
|
||||
|
||||
ini=$(find "$dir" -maxdepth 1 -iname "skin.ini" | head -n1 || true)
|
||||
if [ -f "$ini" ]; then
|
||||
line=$(grep -i '^[[:space:]]*Name:' "$ini" | head -n1 || true)
|
||||
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 ))
|
||||
if [ -z "${name_dirs[$name]:-}" ]; then
|
||||
name_dirs["$name"]="$dir_base"
|
||||
else
|
||||
name_dirs["$name"]+=",${dir_base}"
|
||||
fi
|
||||
done
|
||||
shopt -u nullglob
|
||||
|
||||
for nm in "${!name_counts[@]}"; do
|
||||
if [ "${name_counts[$nm]}" -gt 1 ]; then
|
||||
duplicates+=("$nm")
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "${#duplicates[@]}" -gt 0 ]; then
|
||||
echo "⚠️ Duplicate skin.ini Names found:"
|
||||
for nm in "${duplicates[@]}"; do
|
||||
IFS=',' read -r -a dirs <<< "${name_dirs[$nm]}"
|
||||
echo " • $nm (${name_counts[$nm]} skins):"
|
||||
for d in "${dirs[@]}"; do
|
||||
echo " - $d"
|
||||
done
|
||||
done
|
||||
else
|
||||
echo "✓ No duplicate skin.ini Names detected."
|
||||
fi
|
||||
|
||||
echo "[Duplicate Skin Name Check Completed]"
|
||||
|
||||
- name: Generate Danser videos and screenshots
|
||||
shell: bash
|
||||
run: |
|
||||
@@ -403,10 +330,10 @@ jobs:
|
||||
INDEX=1
|
||||
|
||||
sanitize_filename() {
|
||||
echo "$1" \
|
||||
| sed -e 's#[\\/:\*\?"<>|]#-#g' -e 's#%#_#g' \
|
||||
| tr -s ' ' \
|
||||
| sed 's/^ *//;s/ *$//'
|
||||
echo "$1" | \
|
||||
tr -d '\000-\037' | \
|
||||
sed -e 's#[\\/:\*\?"<>|]#-#g' | \
|
||||
sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
|
||||
}
|
||||
|
||||
for skin_path in "${skins[@]}"; do
|
||||
@@ -467,10 +394,10 @@ jobs:
|
||||
[ "${#skin_dirs[@]}" -eq 0 ] && { echo "No skins to process. Exiting."; exit 0; }
|
||||
|
||||
sanitize_filename() {
|
||||
echo "$1" \
|
||||
| sed -e 's#[\\/:\*\?"<>|]#-#g' -e 's#%#_#g' \
|
||||
| tr -s ' ' \
|
||||
| sed 's/^ *//;s/ *$//'
|
||||
echo "$1" | \
|
||||
tr -d '\000-\037' | \
|
||||
sed -e 's#[\\/:\*\?"<>|]#-#g' | \
|
||||
sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
|
||||
}
|
||||
|
||||
ICONS_JSON_FILE="${{ github.workspace }}/.gitea/workflows/icons.json"
|
||||
@@ -558,10 +485,10 @@ jobs:
|
||||
[ "${#skin_dirs[@]}" -eq 0 ] && { echo "No skins to process. Exiting."; exit 0; }
|
||||
|
||||
sanitize_filename() {
|
||||
echo "$1" \
|
||||
| sed -e 's#[\\/:\*\?"<>|]#-#g' -e 's#%#_#g' \
|
||||
| tr -s ' ' \
|
||||
| sed 's/^ *//;s/ *$//'
|
||||
echo "$1" | \
|
||||
tr -d '\000-\037' | \
|
||||
sed -e 's#[\\/:\*\?"<>|]#-#g' | \
|
||||
sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
|
||||
}
|
||||
|
||||
FIXED_TIMESTAMP="2025-01-01 00:00:00"
|
||||
@@ -612,7 +539,7 @@ jobs:
|
||||
echo "$1" | \
|
||||
tr -d '\000-\037' | \
|
||||
sed -e 's#[\\/:\*\?"<>|]#-#g' | \
|
||||
sed 's/^[[:space:]]*//;s/[[:space:]]*$//'
|
||||
sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
|
||||
}
|
||||
|
||||
url_encode_path() {
|
||||
@@ -764,13 +691,11 @@ jobs:
|
||||
set -euo pipefail
|
||||
echo "[Migration of flat assets started]"
|
||||
|
||||
# helper to sanitize header
|
||||
sanitize() {
|
||||
echo "$1" \
|
||||
| tr -d '\r\n' \
|
||||
| sed -e 's#[\\/:\*\?"<>|]#-#g' -e 's#%#_#g' \
|
||||
| tr -s ' ' \
|
||||
| sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
|
||||
echo "$1" | \
|
||||
tr -d '\000-\037' | \
|
||||
sed -e 's#[\\/:\*\?"<>|]#-#g' | \
|
||||
sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
|
||||
}
|
||||
|
||||
readarray -t skins <<< "$ALL_SKINS_DIR"
|
||||
@@ -782,6 +707,12 @@ jobs:
|
||||
raw=$(grep -i '^[[:space:]]*Name:' "$ini" | head -n1 || true)
|
||||
raw="${raw#*:}"
|
||||
header=$(sanitize "$raw")
|
||||
if [[ -z "$header" ]]; then
|
||||
header=$(sanitize "$skin")
|
||||
fi
|
||||
echo "DEBUG: raw='$raw' sanitized='$header' for skin='$skin'"
|
||||
else
|
||||
echo "DEBUG: no skin.ini found, using fallback: sanitized='$header' for skin='$skin'"
|
||||
fi
|
||||
[[ -n "$header" ]] && hdr2fld["$header"]="$skin"
|
||||
done
|
||||
@@ -825,20 +756,16 @@ jobs:
|
||||
set -euo pipefail
|
||||
echo "[Cleanup Extra Files Started]"
|
||||
|
||||
# Remove legacy docs
|
||||
[ -d src/docs ] && rm -rf src/docs
|
||||
[ -f how-to-use.md ] && rm -f how-to-use.md
|
||||
|
||||
# Read the current list of skins
|
||||
readarray -t skins <<< "$ALL_SKINS_DIR"
|
||||
|
||||
# Helper to sanitize header (for pruning inside)
|
||||
sanitize() {
|
||||
echo "$1" \
|
||||
| tr -d '\r\n' \
|
||||
| sed -e 's#[\\/:\*\?"<>|]#-#g' -e 's#%#_#g' \
|
||||
| tr -s ' ' \
|
||||
| sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
|
||||
sanitize_filename() {
|
||||
echo "$1" | \
|
||||
tr -d '\000-\037' | \
|
||||
sed -e 's#[\\/:\*\?"<>|]#-#g' | \
|
||||
sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
|
||||
}
|
||||
|
||||
for root in "$REPO_SCREENSHOT_DIR" "$REPO_RANKING_PANEL_DIR" "$REPO_MOD_ICONS_DIR" "$OSK_PATH"; do
|
||||
@@ -853,12 +780,15 @@ jobs:
|
||||
done
|
||||
|
||||
for skin in "${skins[@]}"; do
|
||||
header=$(sanitize "$skin")
|
||||
header=$(sanitize_filename "$skin")
|
||||
ini=$(find "$DANSER_SKINS_DIR/$skin" -maxdepth 1 -type f -iname "skin.ini" -print -quit || true)
|
||||
if [[ -f "$ini" ]]; then
|
||||
raw=$(grep -i '^[[:space:]]*Name:' "$ini" | head -n1 || true)
|
||||
raw="${raw#*:}"
|
||||
header=$(sanitize "$raw")
|
||||
tmp_header=$(sanitize_filename "$raw")
|
||||
if [[ -n "$tmp_header" ]]; then
|
||||
header="$tmp_header"
|
||||
fi
|
||||
fi
|
||||
|
||||
expect_gif="$header.gif"
|
||||
|
||||
Reference in New Issue
Block a user