Skip to content

Commit bd89c7f

Browse files
committed
Added a --dry-run option to bin/mkdevbranch, and added some exception handling
- Legacy-Id: 17467
1 parent 866de97 commit bd89c7f

1 file changed

Lines changed: 24 additions & 12 deletions

File tree

bin/mkdevbranch

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,13 @@ trap 'echo "$program($LINENO): Command failed with error code $? ([$$] $0 $*)";
7878
# Option parsing
7979

8080
# Options
81-
shortopts=hm:M:vV
82-
longopts=help,meeting=,message=,verbose,version
81+
shortopts=hm:M:nvV
82+
longopts=help,meeting=,message=,dry-run,verbose,version
8383

8484
# Default values
8585
num=""
8686
msg=""
87+
do=""
8788

8889
if [ "$(uname)" = "Linux" ]; then
8990
args=$(getopt -o "$shortopts" --long "$longopts" -n '$program' -- $SV "$@")
@@ -103,6 +104,7 @@ while true ; do
103104
-h| --help) usage; exit;; # Show this help, then exit
104105
-m| --meeting) num=$2; shift;; # Specify the IETF meeting number
105106
-M| --message) msg=$2; shift;; # Specify extra message text
107+
-n| --dry-run) do="echo -- ==>";; # Only show what would be done
106108
-v| --verbose) VERBOSE=1;; # Be more talkative
107109
-V| --version) version; exit;; # Show program version, then exit
108110
--) shift; break;;
@@ -128,8 +130,8 @@ function mksvndir() {
128130
who=$1
129131
if [ "$2" ]; then dir=$2; else dir=$who; fi
130132
if ! svn info https://svn.tools.ietf.org/svn/tools/ietfdb/personal/$dir >/dev/null 2>&1 ; then
131-
echo "Creating personal directory area for IETF datatracker coding: /personal/$dir"
132-
svn mkdir https://svn.tools.ietf.org/svn/tools/ietfdb/personal/$dir -m "Personal SVN dir for $who, for IETF datatracker code"
133+
$do echo "Creating personal directory area for IETF datatracker coding: /personal/$dir"
134+
$do svn mkdir https://svn.tools.ietf.org/svn/tools/ietfdb/personal/$dir -m "Personal SVN dir for $who, for IETF datatracker code"
133135
else
134136
echo "Repository area personal/$dir is already in place."
135137
fi
@@ -143,7 +145,7 @@ cd $progdir
143145

144146
if [ "$who" ]; then
145147
mksvndir $who
146-
svn cp https://svn.tools.ietf.org/svn/tools/ietfdb/$source https://svn.tools.ietf.org/svn/tools/ietfdb/personal/$who/$target/ -m "New branch for $target"
148+
$do svn cp https://svn.tools.ietf.org/svn/tools/ietfdb/$source https://svn.tools.ietf.org/svn/tools/ietfdb/personal/$who/$target/ -m "New branch for $target"
147149
echo "New branch: ^/personal/$who/$target"
148150
else
149151
[ "$msg" ] && msg="
@@ -154,11 +156,21 @@ $msg
154156
trac-admin /www/tools.ietf.org/tools/ietfdb wiki export IETF${n}SprintSignUp \
155157
| egrep "^\|\|" | tail -n +2 | python -c '
156158
import sys, re
157-
afile = open("aliases")
158-
aliases = dict([ line.strip().split(None,1) for line in afile.read().splitlines() ])
159+
with open("aliases") as afile:
160+
try:
161+
aliases = dict([ line.strip().split(None,1) for line in afile.read().splitlines() if line.strip() ])
162+
except ValueError:
163+
sys.stderr.write([ line.strip().split(None,1) for line in afile.read().splitlines() if line.strip() ])
164+
raise
159165
160166
for line in sys.stdin:
161-
blank, name, email, rest = line.strip().split("||", 3)
167+
try:
168+
blank, name, email, rest = line.strip().split("||", 3)
169+
email = email.strip()
170+
except ValueError:
171+
sys.stderr.write(line+"\n")
172+
raise
173+
162174
login, dummy = re.split("[@.]", email, 1)
163175
if email in aliases:
164176
login = aliases[email]
@@ -171,9 +183,9 @@ for line in sys.stdin:
171183
echo "$login ($name <$email>):"
172184
mksvndir $login
173185
if ! svn info https://svn.tools.ietf.org/svn/tools/ietfdb/personal/$login/$target >/dev/null 2>&1 ; then
174-
echo " creating $target branch for $login ($name)."
175-
svn cp https://svn.tools.ietf.org/svn/tools/ietfdb/$source https://svn.tools.ietf.org/svn/tools/ietfdb/personal/$login/$target/ -m "New IETF datatracker coding branch for $name" \
176-
&& mail "$name <$email>" -s "A new SVN branch for you for IETF datatracker coding${rev:+, based on $rev}." -b henrik@levkowetz.com <<-EOF
186+
$do echo " creating $target branch for $login ($name)."
187+
$do svn cp https://svn.tools.ietf.org/svn/tools/ietfdb/$source https://svn.tools.ietf.org/svn/tools/ietfdb/personal/$login/$target/ -m "New IETF datatracker coding branch for $name" \
188+
&& $do mail "$name <$email>" -s "A new SVN branch for you for IETF datatracker coding${rev:+, based on $rev}." -b henrik@levkowetz.com <<-EOF
177189
Hi,
178190
$msg
179191
This mail has been automatically generated by the $program script.
@@ -199,7 +211,7 @@ for line in sys.stdin:
199211
200212
EOF
201213
else
202-
echo " branch personal/$login/$target already exists."
214+
$do echo " branch personal/$login/$target already exists."
203215
fi
204216
done
205217
fi

0 commit comments

Comments
 (0)