From 6128d37d27e0572e41245d5db1b1e5ff8d1e701f Mon Sep 17 00:00:00 2001 From: Toke Eskildsen <te@ekot.dk> Date: Mon, 13 Jan 2014 23:16:19 +0100 Subject: [PATCH] Closes #31 (Better progress status) --- quack.sh | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/quack.sh b/quack.sh index 58397c9..5472a7e 100755 --- a/quack.sh +++ b/quack.sh @@ -167,6 +167,7 @@ OSD_DIRECT="http://github.com/openseadragon/openseadragon/releases/download/v1.0 START_PATH=`pwd` pushd `dirname $0` > /dev/null ROOT=`pwd` + if [ -e "quack.settings" ]; then echo "Sourcing user settings from quack.settings in `pwd`" source "quack.settings" @@ -198,6 +199,13 @@ IMAGE_TEMPLATE="$ROOT/web/image_template.html" IMAGELINK_TEMPLATE="$ROOT/web/imagelink_template.html" DRAGON="openseadragon.min.js" +export IMAGE_COUNTER="$ROOT/quack.imagecounter.temp.$$" +export TEMPDIR_LOCK="$ROOT/quack.lock.$$" +if [ -d $TEMPDIR_LOCK ]; then + echo "Removing hopefully stale lock folder $TEMPDIR_LOCK" + rm -rf $TEMPDIR_LOCK $IMAGE_COUNTER +fi + function usage() { echo "quack 1.2 beta - Quality Assurance oriented ALTO viewer" echo "" @@ -392,9 +400,23 @@ function makeImages() { exit fi + # This is multi threaded so we need to synchronize the counter update + # and we need to use a file to holde the counter as environment variables + # are not updated across threads. Rather ugly. + # http://stackoverflow.com/questions/8231847/bash-script-to-count-number-of-times-script-has-run + mkdir $TEMPDIR_LOCK 2> /dev/null + while [[ $? -ne 0 ]] ; do + sleep 0.1 + mkdir $TEMPDIR_LOCK 2> /dev/null + done + CREATED_IMAGES=`cat $IMAGE_COUNTER` + CREATED_IMAGES=$((CREATED_IMAGES+1)) + echo "$CREATED_IMAGES" > $IMAGE_COUNTER + rm -rf $TEMPDIR_LOCK + # Even if TILE="true", we create the full main presentational image as it # might be requested for download - if shouldGenerate "$FORCE_QAIMAGE" "$DEST_IMAGE" "QA"; then + if shouldGenerate "$FORCE_QAIMAGE" "$DEST_IMAGE" "QA (${CREATED_IMAGES}/${TOTAL_IMAGES}"; then gm convert "$SOURCE_IMAGE" -quality $IMAGE_DISP_QUALITY "$DEST_IMAGE" fi @@ -701,8 +723,8 @@ function makePreviewPage() { return fi - TOTAL_PROCESSED=$((TOTAL_PROCESSED+1)) - echo " - ${P##*/} (${TOTAL_PROCESSED}/${TOTAL_IMAGES})" + CREATED_PAGES=$((CREATED_PAGES+1)) + echo " - ${P##*/} (${CREATED_PAGES}/${TOTAL_IMAGES})" local ALTO_FILE="${BASE}${ALTO_EXT}" processALTO "$SRC_FOLDER" "$DEST_FOLDER" "$ALTO_FILE" $IMAGE_WIDTH $IMAGE_HEIGHT @@ -955,9 +977,11 @@ function makeIndex() { echo "Quack starting at `date`" copyFiles pushd "$SOURCE" > /dev/null -TOTAL_IMAGES=`ls -R $IMAGE_GLOB 2> /dev/null | wc -l` -TOTAL_PROCESSED=0 +export TOTAL_IMAGES=`ls -R $IMAGE_GLOB 2> /dev/null | wc -l` +CREATED_PAGES=0 +export CREATED_IMAGES=0 popd > /dev/null makeIndex "" "" "$SOURCE" "$DEST" +rm -r $IMAGE_COUNTER echo "All done at `date`" echo "Please open ${DEST}/index.html in a browser" -- GitLab