From 0d5de751e67f400dd1415992d08c84c08e477efa Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Thu, 20 Mar 2008 20:35:51 +0000 Subject: Implement a bunch of options, and only stay awake with --watch enabled. --- localwebgallerydaemon | 132 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 93 insertions(+), 39 deletions(-) (limited to 'localwebgallerydaemon') diff --git a/localwebgallerydaemon b/localwebgallerydaemon index f0bc0d1..a43da53 100755 --- a/localwebgallerydaemon +++ b/localwebgallerydaemon @@ -3,18 +3,11 @@ # /usr/local/bin/localwebgalleryupdate # Copyright 2008 Jonas Smedegaard # -# $Id: localwebgallerydaemon,v 1.1 2008-03-18 23:22:03 jonas Exp $ +# $Id: localwebgallerydaemon,v 1.2 2008-03-20 20:35:51 jonas Exp $ # # (Re)generate web gallery whenever source directory changes # # TODO: Implement options: -# --help -# --sourcedir -# --targetdir -# --run-once -# --now -# --verbose -# --debug # --init (create targetdir if missing, fail if exists and non-empty) # # TODO: implement ask() and the following options: @@ -23,11 +16,10 @@ # # TODO: Support more gallery engines # -# TODO: Support overriding defaults in rc-file +# TODO: Support system-wide and per-user config overrides # set -e -#set -bm # Defaults options SOURCEDIR="$HOME/public_media" @@ -35,31 +27,31 @@ TARGETDIR="$HOME/public_html/gallery" GENERATOR="lazygal" THEME="image-index" -# Use defaults if not overridden -sourcedir="${1:-$SOURCEDIR}" -targetdir="${2:-$TARGETDIR}" - PRG=$(basename "$0") -# Required external programs -EXTPRG="/usr/bin/fileschanged" -case $GENERATOR in - lazygal) - EXTPRG="$EXTPRG /usr/bin/$GENERATOR" - ;; -esac - showhelp() { cat </dev/null; then + echo " $generator" + fi + done + echo +exit 0 +fi + +# Check if generator is supported and declare needed external programs +case $generator in + lazygal) which "$generator" >/dev/null \ + || exit1 "Unsupported generator \"$generator\" (try --generator=list).";; + *) exit1 "Unsupported generator \"$generator\".";; +esac + +# Static defaults +lazygal_opts="--quiet --check-all-dirs --clean-destination" +lazygal_theme_opts="${THEME:+--theme $THEME}" # Sanity checks [ -d "$sourcedir" ] || exit1 "Source directory \"$sourcedir\" is not a directory" [ -d "$targetdir" ] || exit1 "Target directory \"$targetdir\" is not a directory" -for prg in $EXTPRG; do - [ -x "$prg" ] || exit1 "Required program \"$prg\" not installed" -done +[ -z "$watch" ] || which fileschanged >/dev/null \ + || exit1 "Helper tool \"fileschanged\" needed for --watch mode is unavailable." +# TODO: Make it work to signal status to parent proces +#trap 'echo >&2 "Starting gallery update as requested."' USR1 updategallery() { onemoretime=yes trap 'onemoretime=yes' USR1 while [ -n "$onemoretime" ]; do +# [ -z "$verbose" ] || kill -USR1 $PPID onemoretime= - case "$GENERATOR" in + case "$generator" in lazygal) - lazygal $lazygal_opts -o "$targetdir" "$sourcedir" + lazygal $lazygal_opts $lazygal_theme_opts -o "$targetdir" "$sourcedir" ;; esac - sleep 10 + [ "--once" = "$1" ] || sleep 10 done } -pid= -fileschanged -r -s created,changed,deleted "$sourcedir" | while read file; do +started= +# Update immediately if requested or if watch mode isn't requested +if [ -n "$now" ] || [ -z "$watch" ]; then + if [ -z "$watch" ]; then + [ -z "$verbose" ] || echo >&2 "Starting gallery update once." + updategallery --once + else + started=yes + [ -z "$verbose" ] || echo >&2 "Starting gallery update before invoking watch mode." + updategallery & + fi +fi +[ -z "$watch" ] || [ -z "$verbose" ] || echo >&2 "Invoking watch mode." +[ -z "$watch" ] || fileschanged -r -s created,changed,deleted "$sourcedir" | while read file; do # Ignore hidden files (used for temporary files by rsync) case "$file" in @@ -103,8 +155,10 @@ fileschanged -r -s created,changed,deleted "$sourcedir" | while read file; do esac # Invoke update if not active or telling to take another spin fails - if [ -z "$progress" ] || ! kill -USR1 $(jobs -p) 2>/dev/null; then - progress=yes + [ -z "$verbose" ] || echo >&2 "Update request triggered by \"$file\"" + if [ -z "$started" ] || ! kill -USR1 $(jobs -p) 2>/dev/null; then + started=yes + [ -z "$verbose" ] || echo >&2 "Request gallery update." updategallery & fi done -- cgit v1.2.3