84 lines
921 B
Bash
Executable File
84 lines
921 B
Bash
Executable File
#! /bin/sh
|
|
|
|
set -e
|
|
|
|
usage()
|
|
{
|
|
echo "$0 [-s <size>] [-j <jobs>] [-h] -d <root> <path>"
|
|
}
|
|
|
|
SIZE=96
|
|
|
|
while getopts d:j:s:h arg
|
|
do
|
|
case $arg in
|
|
d) ROOT="$OPTARG"
|
|
;;
|
|
j) JOBS="$OPTARG"
|
|
;;
|
|
s) SIZE="$OPTARG"
|
|
;;
|
|
h) usage
|
|
exit 0
|
|
;;
|
|
?) usage >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "$ROOT" ]; then
|
|
usage >&2
|
|
exit 1
|
|
fi
|
|
|
|
shift $(($OPTIND - 1))
|
|
|
|
if [ $# != 1 ]; then
|
|
usage >&2
|
|
exit 1
|
|
fi
|
|
|
|
DIR="$1"
|
|
|
|
gen()
|
|
{
|
|
IN="$1"
|
|
OUT="$2"
|
|
|
|
if [ -z "$OUT" ]
|
|
then
|
|
echo Expected output filename >&2
|
|
return 1
|
|
fi
|
|
|
|
mkdir -p "$(dirname "$OUT")"
|
|
|
|
if convert -thumbnail x$SIZE "$IN" "$OUT"
|
|
then
|
|
echo Created $OUT
|
|
else
|
|
echo Failed to create $OUT >&2
|
|
fi
|
|
}
|
|
|
|
scan()
|
|
{
|
|
while read d
|
|
do
|
|
if [ -n "$d" ]
|
|
then
|
|
scan "$d"
|
|
fi
|
|
|
|
"$(dirname "$0")"/mkgen -d "$ROOT" "$1"
|
|
done <<-EOF
|
|
$(eval find \"$1\"/* -prune -type d || return 0)
|
|
EOF
|
|
}
|
|
|
|
echo Generating Makefiles...
|
|
scan "$DIR"
|
|
|
|
cd "$ROOT/thumbnails" && make ${JOBS:+-j$JOBS}
|