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