changeset 46:377ba1dd9ec6

added -long option to handle values with spaces
author casties
date Mon, 11 Dec 2006 19:09:39 +0100
parents b1f1d1fbf6e5
children c96683776ade
files changemany.sh
diffstat 1 files changed, 74 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/changemany.sh	Mon Dec 11 19:09:00 2006 +0100
+++ b/changemany.sh	Mon Dec 11 19:09:39 2006 +0100
@@ -1,19 +1,37 @@
 #!/bin/bash
 
-VERSION="changemany V0.1 (29.6.2006 ROC)"
+VERSION="changemany V0.2 (11.12.2006 ROC)"
 
 #set -x
 
 if [ -z "$1$2" ]
 then
     echo $VERSION
-    echo "use: $0 dirlist [params...]"
+    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"
@@ -26,24 +44,60 @@
 
 CNT=0
 
-# 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 /usr/local/mpiwg/archive/changemeta "${PARAM1:+$PARAM1=$OPT1}" "${PARAM2:+$PARAM2=$OPT2}" "${PARAM3:+$PARAM3=$OPT3}" "$DIR"
-	then
-	    echo "  OK"
-	else
-	    echo "FAILED!"
-	    # abort?
-	fi
-    else
-	echo "$CNT ERROR: document directory $DIR not found!"
-    fi
-done < $DIRLIST
+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_devel/changemeta.pl "${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