Added a --dry-run option to bin/mkdevbranch, and added some exception handling

- Legacy-Id: 17467
This commit is contained in:
Henrik Levkowetz 2020-03-19 22:39:43 +00:00
parent 866de9784f
commit bd89c7f5be

View file

@ -78,12 +78,13 @@ trap 'echo "$program($LINENO): Command failed with error code $? ([$$] $0 $*)";
# Option parsing
# Options
shortopts=hm:M:vV
longopts=help,meeting=,message=,verbose,version
shortopts=hm:M:nvV
longopts=help,meeting=,message=,dry-run,verbose,version
# Default values
num=""
msg=""
do=""
if [ "$(uname)" = "Linux" ]; then
args=$(getopt -o "$shortopts" --long "$longopts" -n '$program' -- $SV "$@")
@ -103,6 +104,7 @@ while true ; do
-h| --help) usage; exit;; # Show this help, then exit
-m| --meeting) num=$2; shift;; # Specify the IETF meeting number
-M| --message) msg=$2; shift;; # Specify extra message text
-n| --dry-run) do="echo -- ==>";; # Only show what would be done
-v| --verbose) VERBOSE=1;; # Be more talkative
-V| --version) version; exit;; # Show program version, then exit
--) shift; break;;
@ -128,8 +130,8 @@ function mksvndir() {
who=$1
if [ "$2" ]; then dir=$2; else dir=$who; fi
if ! svn info https://svn.tools.ietf.org/svn/tools/ietfdb/personal/$dir >/dev/null 2>&1 ; then
echo "Creating personal directory area for IETF datatracker coding: /personal/$dir"
svn mkdir https://svn.tools.ietf.org/svn/tools/ietfdb/personal/$dir -m "Personal SVN dir for $who, for IETF datatracker code"
$do echo "Creating personal directory area for IETF datatracker coding: /personal/$dir"
$do svn mkdir https://svn.tools.ietf.org/svn/tools/ietfdb/personal/$dir -m "Personal SVN dir for $who, for IETF datatracker code"
else
echo "Repository area personal/$dir is already in place."
fi
@ -143,7 +145,7 @@ cd $progdir
if [ "$who" ]; then
mksvndir $who
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"
$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"
echo "New branch: ^/personal/$who/$target"
else
[ "$msg" ] && msg="
@ -154,11 +156,21 @@ $msg
trac-admin /www/tools.ietf.org/tools/ietfdb wiki export IETF${n}SprintSignUp \
| egrep "^\|\|" | tail -n +2 | python -c '
import sys, re
afile = open("aliases")
aliases = dict([ line.strip().split(None,1) for line in afile.read().splitlines() ])
with open("aliases") as afile:
try:
aliases = dict([ line.strip().split(None,1) for line in afile.read().splitlines() if line.strip() ])
except ValueError:
sys.stderr.write([ line.strip().split(None,1) for line in afile.read().splitlines() if line.strip() ])
raise
for line in sys.stdin:
blank, name, email, rest = line.strip().split("||", 3)
try:
blank, name, email, rest = line.strip().split("||", 3)
email = email.strip()
except ValueError:
sys.stderr.write(line+"\n")
raise
login, dummy = re.split("[@.]", email, 1)
if email in aliases:
login = aliases[email]
@ -171,9 +183,9 @@ for line in sys.stdin:
echo "$login ($name <$email>):"
mksvndir $login
if ! svn info https://svn.tools.ietf.org/svn/tools/ietfdb/personal/$login/$target >/dev/null 2>&1 ; then
echo " creating $target branch for $login ($name)."
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" \
&& mail "$name <$email>" -s "A new SVN branch for you for IETF datatracker coding${rev:+, based on $rev}." -b henrik@levkowetz.com <<-EOF
$do echo " creating $target branch for $login ($name)."
$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" \
&& $do mail "$name <$email>" -s "A new SVN branch for you for IETF datatracker coding${rev:+, based on $rev}." -b henrik@levkowetz.com <<-EOF
Hi,
$msg
This mail has been automatically generated by the $program script.
@ -199,7 +211,7 @@ for line in sys.stdin:
EOF
else
echo " branch personal/$login/$target already exists."
$do echo " branch personal/$login/$target already exists."
fi
done
fi