slcl/mkgen

90 lines
1.6 KiB
Bash
Executable File

#! /bin/sh
usage()
{
echo "$0 [-s <size>] [-j <jobs>] [-h] -d <root> <path>"
}
SIZE=96
while getopts d:s:h arg
do
case $arg in
d) ROOT="$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
TDIR="$(echo "$1" | sed "s,$ROOT/user,$ROOT/thumbnails,")"
eval find \"$1\"/* -prune >/dev/null || return 0
mkdir -p "$TDIR"
MK="$(echo "$TDIR/Makefile")"
cat <<-"EOF" > "$MK"
.POSIX:
EOF
echo "DIRS=\\" >> "$MK"
eval find \"$TDIR\"/* -prune -type d > "$TDIR/.dirs"
while read dir
do
D="$(echo "$dir" | sed "s, ,\\\\ ,g")"
echo "$D \\" >> "$MK"
done < "$TDIR/.dirs"
echo >> "$MK"
echo "DEPS=\\" >> "$MK"
eval find \"$1\"/* -prune -type f \
-a -iname '*.jpeg' \
-o -iname '*.jpg' \
-o -iname '*.png' \
-o -iname '*.jpeg' > "$TDIR/.files"
while read f
do
THUMBNAIL="$(echo "$f" | sed "s,$ROOT/user/,$ROOT/thumbnails/," \
| sed "s, ,\\\\ ,g")"
echo "$THUMBNAIL \\" >> "$MK"
done < "$TDIR/.files"
echo >> "$MK"
echo 'all: $(DEPS) $(DIRS)' >> "$MK"
echo 'FORCE:' >> "$MK"
while read dir
do
D="$(echo "$dir" | sed "s, ,\\\\ ,g")"
echo "$D: FORCE" >> "$MK"
printf '\t+cd $@ && $(MAKE)\n' >> "$MK"
done < "$TDIR/.dirs"
while read f
do
THUMBNAIL="$(echo "$f" | sed "s,$ROOT/user/,$ROOT/thumbnails/," \
| sed "s, ,\\\\ ,g")"
EF=$(echo "$f" | sed "s, ,\\\\ ,g")
echo $THUMBNAIL: $EF >> "$MK"
printf '\tconvert -thumbnail x%d "$<" "$@" || :\n' $SIZE >> "$MK"
done < "$TDIR/.files"
echo "Successfully generated $MK"