mirror of
https://github.com/anotherhadi/awesome-wallpapers.git
synced 2026-10-05 18:28:25 +02:00
63 lines
1.7 KiB
Bash
Executable File
63 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Validate wallpaper filenames against the naming convention described in README.md:
|
|
# wallpaper-name_tag1_tag2.png
|
|
# - name: lowercase letters/digits, words separated by "-"
|
|
# - tags: lowercase letters, words separated by "-", tags separated by "_"
|
|
# - only .png and .gif are accepted
|
|
# - gifs must carry the "animated" tag
|
|
# - every gif must have a same-named .png counterpart
|
|
|
|
set -uo pipefail
|
|
|
|
wallpapers_dir="wallpapers"
|
|
name_re='^[a-z0-9]+(-[a-z0-9]+)*(_[a-z]+(-[a-z]+)*)*$'
|
|
status=0
|
|
|
|
if [[ ! -d "$wallpapers_dir" ]]; then
|
|
echo "No $wallpapers_dir directory found, skipping."
|
|
exit 0
|
|
fi
|
|
|
|
shopt -s nullglob
|
|
for file in "$wallpapers_dir"/*; do
|
|
[[ -f "$file" ]] || continue
|
|
filename=$(basename "$file")
|
|
basename="${filename%.*}"
|
|
ext="${filename##*.}"
|
|
|
|
if [[ "$ext" != "png" && "$ext" != "gif" ]]; then
|
|
echo "❌ $filename: only .png and .gif files are accepted"
|
|
status=1
|
|
continue
|
|
fi
|
|
|
|
if [[ ! "$basename" =~ $name_re ]]; then
|
|
echo "❌ $filename: invalid name/tags, expected wallpaper-name_tag1_tag2 (lowercase, '-' separated words, '_' separated tags)"
|
|
status=1
|
|
continue
|
|
fi
|
|
|
|
if [[ "$ext" == "gif" ]]; then
|
|
IFS='_' read -r -a parts <<<"$basename"
|
|
has_animated=0
|
|
for tag in "${parts[@]:1}"; do
|
|
[[ "$tag" == "animated" ]] && has_animated=1
|
|
done
|
|
if [[ "$has_animated" -eq 0 ]]; then
|
|
echo "❌ $filename: gif files must include the 'animated' tag"
|
|
status=1
|
|
fi
|
|
|
|
if [[ ! -f "$wallpapers_dir/$basename.png" ]]; then
|
|
echo "❌ $filename: missing matching static $basename.png"
|
|
status=1
|
|
fi
|
|
fi
|
|
done
|
|
|
|
if [[ "$status" -eq 0 ]]; then
|
|
echo "✅ All wallpaper filenames are valid."
|
|
fi
|
|
|
|
exit "$status"
|