name: "Cleanup Extra Files" description: "Remove leftover or outdated assets from repository" inputs: all_skins: description: "Newline-delimited list of all skins" required: true runs: using: "composite" steps: - name: Cleanup Extra Files shell: bash run: | set -euo pipefail echo "[Cleanup Extra Files Started]" readarray -t skins <<< "${{ inputs.all_skins }}" [ -f how-to-use.md ] && rm -f how-to-use.md [ -f src/replay.osr ] && rm -f src/replay.osr [ -d src/default-skin ] && rm -rf src/default-skin sanitize_filename() { echo "$1" | \ tr -d '\000-\037' | \ sed -e 's#[\\/:\*\?"<>|]#-#g' | \ sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' } prune_dir() { local root="$1" local skin="$2" local expected="$3" for f in "$root"/*; do [ -f "$f" ] || continue name="$(basename "$f")" if printf '%s\n' "${skins[@]}" | grep -Fxq -- "$name"; then continue fi echo " → Removing unexpected root file: $f" rm -f "$f" done dir="$root/$skin" [ -d "$dir" ] || return for f in "$dir"/*; do [ -e "$f" ] || continue if [[ "$(basename "$f")" != "$expected" ]]; then echo " → Removing unexpected file: $f" rm -f "$f" fi done } for root in "$REPO_SCREENSHOT_DIR" "$REPO_RANKING_PANEL_DIR" "$REPO_MOD_ICONS_DIR" "$REPO_THUMBNAIL_DIR" "$OSK_PATH" "$DOC_DIR"; do [ -d "$root" ] || continue for dir in "$root"/*; do [ -d "$dir" ] || continue name="$(basename "$dir")" if ! printf '%s\n' "${skins[@]}" | grep -Fxq -- "$name"; then echo " → Skin '$name' deleted—removing directory $dir" rm -rf "$dir" fi done done for skin in "${skins[@]}"; do 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#*:}" raw="$(echo "$raw" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')" tmp_header=$(sanitize_filename "$raw") [[ -n "$tmp_header" ]] && header="$tmp_header" fi prune_dir "$REPO_SCREENSHOT_DIR" "$skin" "$header.mp4" prune_dir "$REPO_RANKING_PANEL_DIR" "$skin" "$header.webp" prune_dir "$REPO_MOD_ICONS_DIR" "$skin" "$header-mod-icons.webp" prune_dir "$REPO_THUMBNAIL_DIR" "$skin" "$header.webp" prune_dir "$OSK_PATH" "$skin" "$header.osk" prune_dir "$DOC_DIR" "$skin" "$header.md" done echo "[Cleanup Extra Files Complete]"