41
|
1 #!/bin/bash
|
|
2
|
46
|
3 VERSION="changemany V0.2 (11.12.2006 ROC)"
|
41
|
4
|
|
5 #set -x
|
|
6
|
|
7 if [ -z "$1$2" ]
|
|
8 then
|
|
9 echo $VERSION
|
46
|
10 echo "use: $0 dirlist [-debug] [-dry-run] [-long] [params...]"
|
41
|
11 echo " Changes the document directories given in the file dirlist."
|
|
12 echo " The list has the full pathname first and then one column per parameter, separated with spaces."
|
46
|
13 echo " -debug: is passed to changemeta script"
|
|
14 echo " -dry-run: only print out script calls"
|
|
15 echo " -long: pass only one parameter but its value can contain spaces"
|
41
|
16 exit 1
|
|
17 fi
|
|
18
|
|
19 DIRLIST="$1"
|
46
|
20 if [ "$2" == "-debug" ]
|
|
21 then
|
|
22 shift
|
|
23 DEBUG="-debug"
|
|
24 fi
|
|
25 if [ "$2" == "-dry-run" ]
|
|
26 then
|
|
27 shift
|
|
28 DRY_RUN=1
|
|
29 fi
|
|
30 if [ "$2" == "-long" ]
|
|
31 then
|
|
32 shift
|
|
33 LONG=1
|
|
34 fi
|
41
|
35 PARAM1="$2"
|
|
36 PARAM2="$3"
|
|
37 PARAM3="$4"
|
|
38
|
|
39 if [ ! -f $DIRLIST ]
|
|
40 then
|
|
41 echo "ERROR: directory list file $DIRLIST not found!"
|
|
42 exit 1
|
|
43 fi
|
|
44
|
|
45 CNT=0
|
|
46
|
46
|
47 if [ -z $LONG ]
|
|
48 then
|
|
49 # short options
|
|
50 # read directories and options from DIRLIST
|
|
51 while read DIR OPT1 OPT2 OPT3
|
|
52 do
|
|
53 CNT=$(( $CNT + 1 ))
|
|
54 if [ -d "$DIR" ]
|
|
55 then
|
|
56 echo "changing document $CNT: $DIR..."
|
|
57 if [ -n "$DRY_RUN" ]
|
|
58 then
|
|
59 echo "/usr/local/mpiwg/archive/changemeta ${PARAM1:+$PARAM1=$OPT1} ${PARAM2:+$PARAM2=$OPT2} ${PARAM3:+$PARAM3=$OPT3} $DEBUG $DIR"
|
|
60 echo " FAKED"
|
|
61 else
|
|
62 if /usr/local/mpiwg/archive/changemeta "${PARAM1:+$PARAM1=$OPT1}" "${PARAM2:+$PARAM2=$OPT2}" "${PARAM3:+$PARAM3=$OPT3}" "$DEBUG" "$DIR"
|
|
63 then
|
|
64 echo " OK"
|
|
65 else
|
|
66 echo "FAILED!"
|
|
67 # abort?
|
|
68 fi
|
|
69 fi
|
|
70 else
|
|
71 echo "$CNT ERROR: document directory $DIR not found!"
|
|
72 fi
|
|
73 done < $DIRLIST
|
|
74 else
|
|
75 # long option
|
|
76 # read directories and options from DIRLIST
|
|
77 while read DIR OPT
|
|
78 do
|
|
79 CNT=$(( $CNT + 1 ))
|
|
80 if [ -d "$DIR" ]
|
|
81 then
|
|
82 echo "changing document $CNT: $DIR..."
|
|
83 if [ -n "$DRY_RUN" ]
|
|
84 then
|
|
85 echo "/usr/local/mpiwg/archive/changemeta ${PARAM1:+$PARAM1=$OPT} $DEBUG $DIR"
|
|
86 echo " FAKED"
|
|
87 else
|
|
88 if /usr/local/mpiwg/archive_devel/changemeta.pl "${PARAM1:+$PARAM1=$OPT}" "$DEBUG" "$DIR"
|
|
89 then
|
|
90 echo " OK"
|
|
91 else
|
|
92 echo "FAILED!"
|
|
93 # abort?
|
|
94 fi
|
|
95 fi
|
|
96 else
|
|
97 echo "$CNT ERROR: document directory $DIR not found!"
|
|
98 fi
|
|
99 done < $DIRLIST
|
|
100 fi
|
41
|
101
|
|
102 if [ $CNT = 0 ]
|
|
103 then
|
|
104 echo "ERROR: the list file $DIRLIST seems to be empty!"
|
|
105 else
|
|
106 echo "Processed $CNT documents!"
|
|
107 fi
|