51 lines
1.3 KiB
Bash
Executable File

#! /bin/bash
if ! ./avgcolor.py >& /dev/null; then
echo "${0##*/}: ERROR: could not run avgcolor.py (`pwd`/avgcolor.py)" 1>&2
exit 1
fi
if [ -z "$1" ]; then
echo "Usage: ${0##*/} search-dir [...]" 1>&2
exit 1
fi
for file in "$@"; do
if [ ! -d "$file" ]; then
echo "${0##*/}: ERROR: $file does not exist or is not a directory" 1>&2
exit 1
fi
done
cat nodes.txt \
| sed \
-e 's/[ \t]*#.*//' \
-e '/^[ \t]*$/d' \
| while read -r node tile; do
filename="$(find -L "$@" -type f -name "$tile" | head -1)"
if [ -z "$filename" ]; then
echo "WARNING: could not find file '$tile' for node '$node'" 1>&2
continue
fi
avgcolor="$(./avgcolor.py "$filename")"
if [ -z "$avgcolor" ]; then
if expr "$node" : "^xpanes:bar_[0-9]\+$" > /dev/null; then
# Hack to generate xpanes:bar_* anyway
echo "$node 0 0 0"
else
echo "WARNING: failed to compute average color for node '$node' (tile: $tile)" 1>&2
fi
else
echo "$node $avgcolor"
fi
done \
| sed -r \
-e 's/^(default:water_[a-z]+) [0-9 ]+$/\1 49 82 132 128 224/' \
-e 's/^(default:river_water_[a-z]+) [0-9 ]+$/\1 59 99 159 192 224/' \
-e 's/^(default:lava_[a-z]+) [0-9 ]+$/\1 255 100 0/' \
-e 's/^(default:[a-z_]*glass[_a-z0-9]*) ([0-9 ]+)$/\1 \2 64 16/' \
-e 's/^(xpanes:bar_[0-9]+) 0 0 0$/\1 64 64 64/' \
-e 's/^(xpanes:pane_[0-9]*) ([0-9 ]+)$/\1 192 192 227 64 16/' \
> colors.txt