view changemany.sh @ 50:724c615b5982

added please-wait-message
author casties
date Wed, 21 Mar 2007 15:21:01 +0100
parents c96683776ade
children
line wrap: on
line source

#!/bin/bash

VERSION="changemany V0.2 (11.12.2006 ROC)"

#set -x

if [ -z "$1$2" ]
then
    echo $VERSION
    echo "use: $0 dirlist [-debug] [-dry-run] [-long] [params...]"
    echo "  Changes the document directories given in the file dirlist."
    echo "  The list has the full pathname first and then one column per parameter, separated with spaces."
    echo "    -debug: is passed to changemeta script"
    echo "    -dry-run: only print out script calls"
    echo "    -long: pass only one parameter but its value can contain spaces"
    exit 1
fi

DIRLIST="$1"
if [ "$2" == "-debug" ]
then
    shift
    DEBUG="-debug"
fi
if [ "$2" == "-dry-run" ]
then
    shift
    DRY_RUN=1
fi
if [ "$2" == "-long" ]
then
    shift
    LONG=1
fi
PARAM1="$2"
PARAM2="$3"
PARAM3="$4"

if [ ! -f $DIRLIST ]
then
    echo "ERROR: directory list file $DIRLIST not found!"
    exit 1
fi

CNT=0

if [ -z $LONG ]
then
# short options
    # read directories and options from DIRLIST
    while read DIR OPT1 OPT2 OPT3
    do
        CNT=$(( $CNT + 1 ))
        if [ -d "$DIR" ]
        then
	    echo "changing document $CNT: $DIR..."
            if [ -n "$DRY_RUN" ]
            then
                echo "/usr/local/mpiwg/archive/changemeta ${PARAM1:+$PARAM1=$OPT1} ${PARAM2:+$PARAM2=$OPT2} ${PARAM3:+$PARAM3=$OPT3} $DEBUG $DIR"
                echo "  FAKED"
            else
	        if /usr/local/mpiwg/archive/changemeta "${PARAM1:+$PARAM1=$OPT1}" "${PARAM2:+$PARAM2=$OPT2}" "${PARAM3:+$PARAM3=$OPT3}" "$DEBUG" "$DIR"
	        then
	            echo "  OK"
	        else
	            echo "FAILED!"
	            # abort?
	        fi
            fi
        else
	    echo "$CNT ERROR: document directory $DIR not found!"
        fi
    done < $DIRLIST
else
# long option
    # read directories and options from DIRLIST
    while read DIR OPT
    do
        CNT=$(( $CNT + 1 ))
        if [ -d "$DIR" ]
        then
	    echo "changing document $CNT: $DIR..."
            if [ -n "$DRY_RUN" ]
            then
                echo "/usr/local/mpiwg/archive/changemeta ${PARAM1:+$PARAM1=$OPT} $DEBUG $DIR"
                echo "  FAKED"
            else
	        if /usr/local/mpiwg/archive/changemeta "${PARAM1:+$PARAM1=$OPT}" "$DEBUG" "$DIR"
	        then 
	            echo "  OK"
	        else
	            echo "FAILED!"
	            # abort?
	        fi
            fi
        else
	    echo "$CNT ERROR: document directory $DIR not found!"
        fi
    done < $DIRLIST
fi

if [ $CNT = 0 ]
then
    echo "ERROR: the list file $DIRLIST seems to be empty!"
else
    echo "Processed $CNT documents!"
fi