|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +version=0.21 |
| 4 | +program=${0##*/} |
| 5 | +progdir=${0%/*} |
| 6 | +if [ "$progdir" = "$program" ]; then progdir="."; fi |
| 7 | + |
| 8 | +function die() { |
| 9 | + echo -e "\n$program: Error: ${1:0:160} ..." >&2 |
| 10 | + exit 1 |
| 11 | +} |
| 12 | + |
| 13 | +function warn() { |
| 14 | + logger -i -p user.warn -t $program "$*" |
| 15 | + echo "$program: Warning: $*" 1>&2; |
| 16 | +} |
| 17 | + |
| 18 | +function note() { |
| 19 | + logger -i -p user.notice -t $program "$*" |
| 20 | + if [ -n "$OPT_VERBOSE" ]; then echo -e "$*"; fi |
| 21 | +} |
| 22 | + |
| 23 | +function version() { |
| 24 | + echo -e "$program: v$version\n\nRunning as $(id -urn) on $(date +'%Y-%m-%d %H:%M')" |
| 25 | +} |
| 26 | + |
| 27 | +#[ "$#" -gt 0 ] || die "Expected the ietf number as argument on the command line, but found nothing" |
| 28 | +#[ $1 -gt 70 ] || die "Expected the ietf number as argument on the command line, but found '$1'" |
| 29 | + |
| 30 | +#if [ "$1" ]; then arg=$1; else arg=$(svn info http://svn.tools.ietf.org/svn/tools/ietfdb/trunk/ | egrep "^Last Changed Rev" | awk '{print $4}'); fi |
| 31 | +if [ "$1" ]; then arg=$1; else arg=$(svn ls http://svn.tools.ietf.org/svn/tools/ietfdb/tags/ | tail -n 1 | sed -r 's/^(.*)\/$/v\1/' ); fi |
| 32 | + |
| 33 | +if [ "${arg:0:1}" = "v" ]; then |
| 34 | + source="tags/${arg:1}" |
| 35 | + target="$arg" |
| 36 | + rev="release $arg" |
| 37 | +else |
| 38 | + source="trunk@$arg" |
| 39 | + target="r$arg" |
| 40 | + rev="repository rev r$arg" |
| 41 | +fi |
| 42 | + |
| 43 | +function mksvndir() { |
| 44 | + who=$1 |
| 45 | + if [ "$2" ]; then dir=$2; else dir=$who; fi |
| 46 | + if ! svn info http://svn.tools.ietf.org/svn/tools/ietfdb/personal/$dir >/dev/null 2>&1 ; then |
| 47 | + echo "Creating personal directory area for IETF datatracker coding: /personal/$dir" |
| 48 | + svn mkdir http://svn.tools.ietf.org/svn/tools/ietfdb/personal/$dir -m "Personal SVN dir for $who, for IETF datatracker code" |
| 49 | + else |
| 50 | + echo "Repository area personal/$dir is already in place." |
| 51 | + fi |
| 52 | +} |
| 53 | + |
| 54 | +num=$( < /www/tools.ietf.org/meta/current-ietf-number.txt) |
| 55 | +trac-admin /www/tools.ietf.org/tools/ietfdb wiki export IETF${num}SprintSignUp \ |
| 56 | + | egrep "^\|\|" | tail -n +2 | python -c ' |
| 57 | +import sys, re |
| 58 | +for line in sys.stdin: |
| 59 | + blank, name, email, rest = line.strip().split("||", 3) |
| 60 | + login, dummy = re.split("[@.]", email, 1) |
| 61 | + print "\t".join((login.strip().lower(), email.strip().lower(), name.strip())) ' \ |
| 62 | + | $progdir/update $progdir/sprint$num.txt |
| 63 | + |
| 64 | +cat $(ls $progdir/sprint*.txt | tail -n 4) | sed 's/[ \t]*$//' | sort | uniq | while read login email name; do |
| 65 | + echo "" |
| 66 | + echo "$login ($name <$email>):" |
| 67 | + mksvndir $login |
| 68 | + if ! svn info http://svn.tools.ietf.org/svn/tools/ietfdb/personal/$login/$target >/dev/null 2>&1 ; then |
| 69 | + echo " creating $target branch for $login ($name)." |
| 70 | + svn cp http://svn.tools.ietf.org/svn/tools/ietfdb/$source http://svn.tools.ietf.org/svn/tools/ietfdb/personal/$login/$target/ -m "New IETF datatracker coding branch for $name" \ |
| 71 | + && mail "$name <$email>" -s "A new SVN branch for you for IETF datatracker coding${rev:+, based on $rev}." -b henrik@levkowetz.com <<-EOF |
| 72 | + Hi, |
| 73 | +
|
| 74 | + This mail has been automatically generated by the $program script. |
| 75 | +
|
| 76 | + A new SVN branch has been set up for you for IETF datatracker coding, at |
| 77 | + http://svn.tools.ietf.org/svn/tools/ietfdb/personal/$login/$target |
| 78 | + ${rev:+This branch is based on $rev. }You can check it out by doing |
| 79 | + svn co http://svn.tools.ietf.org/svn/tools/ietfdb/personal/$login/$target |
| 80 | +
|
| 81 | + (More instructions about setup is available at |
| 82 | + http://trac.tools.ietf.org/tools/ietfdb/wiki/SprintCoderSetup) |
| 83 | +
|
| 84 | +
|
| 85 | + Best, |
| 86 | +
|
| 87 | + Henrik (via the $program script) |
| 88 | +
|
| 89 | + EOF |
| 90 | + else |
| 91 | + echo " branch personal/$login/$target already exists." |
| 92 | + fi |
| 93 | +done |
0 commit comments