From 032705f100091dd9d725a6aadb98777a8cbf3c8e Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Sun, 24 Feb 2013 20:09:01 +0000 Subject: [PATCH] Moved some utility command-line scripts from test/ to bin/. Added bin/graph-models. - Legacy-Id: 5450 --- {test => bin}/commitlog | 0 bin/graph-models | 21 +++++++++++++++ {test => bin}/mergedevbranch | 0 {test => bin}/mkdevbranch | 5 ++++ bin/mkdiagram | 51 ++++++++++++++++++++++++++++++++++++ {test => bin}/mkrelease | 0 6 files changed, 77 insertions(+) rename {test => bin}/commitlog (100%) create mode 100755 bin/graph-models rename {test => bin}/mergedevbranch (100%) rename {test => bin}/mkdevbranch (97%) create mode 100755 bin/mkdiagram rename {test => bin}/mkrelease (100%) diff --git a/test/commitlog b/bin/commitlog similarity index 100% rename from test/commitlog rename to bin/commitlog diff --git a/bin/graph-models b/bin/graph-models new file mode 100755 index 000000000..505733b1c --- /dev/null +++ b/bin/graph-models @@ -0,0 +1,21 @@ +#!/bin/sh +# +# Copyright The IETF Trust 2007, All Rights Reserved +# +# Requires modelviz.py from +# http://code.djangoproject.com/wiki/DjangoGraphviz +# +PYTHONPATH=`dirname $PWD` +export PYTHONPATH +module=${PWD##*/} +DJANGO_SETTINGS_MODULE=$module.settings +export DJANGO_SETTINGS_MODULE +for d in * +do + if grep models.Model $d/models.py > /dev/null 2>&1 + then + models="$models $d" + fi +done +modelviz.py $* $models > models.dot +dot -Tpng models.dot diff --git a/test/mergedevbranch b/bin/mergedevbranch similarity index 100% rename from test/mergedevbranch rename to bin/mergedevbranch diff --git a/test/mkdevbranch b/bin/mkdevbranch similarity index 97% rename from test/mkdevbranch rename to bin/mkdevbranch index b22de82c2..f6fe26201 100755 --- a/test/mkdevbranch +++ b/bin/mkdevbranch @@ -56,9 +56,14 @@ for n in $(seq $((num-5)) $num); do trac-admin /www/tools.ietf.org/tools/ietfdb wiki export IETF${n}SprintSignUp \ | egrep "^\|\|" | tail -n +2 | python -c ' import sys, re +altlogin = { + "ietf@augustcellars.com": "schaad", +} for line in sys.stdin: blank, name, email, rest = line.strip().split("||", 3) login, dummy = re.split("[@.]", email, 1) + if email in altlogin: + login = altlogin[email] print "\t".join((login.strip().lower(), email.strip().lower(), name.strip())) ' \ | update $progdir/sprint$n.txt done diff --git a/bin/mkdiagram b/bin/mkdiagram new file mode 100755 index 000000000..765a7ba52 --- /dev/null +++ b/bin/mkdiagram @@ -0,0 +1,51 @@ +#!/bin/bash + +# assume we're in bin/, sibling to ietf/ + +cd ${0%/*}/../ietf || { echo "CD to ietf directory failed, bailing out"; exit; } + +trap 'echo "$program($LINENO): Command failed with error code $? ($0 $*)"; exit 1' ERR + +if [ "$*" ]; then apps="$@"; graph="${1%.*}"; else apps=$(ls */models.py | sed 's!/models.py!!'); graph="models"; fi + +newapps="doc group meeting message person name" +legacyapps="announcements idindex idrfc idtracker iesg ietfauth ietfworkflows ipr liaisons mailinglists proceedings redirects submit wgchairs wgcharter wginfo" + +proxy="$(grep ^class */proxy.py | tr '()' ' ' | awk '{printf $2 ","}')" +names="$(grep ^class name/models.py | tr '()' ' ' | awk '{printf $2 ","}')" +legacy="$(for app in $legacyapps; do grep ^class $app/models.py | tr '()' ' '; done | grep -v ' Meeting\\(' | awk '{printf $2 ","}')" +events="$(egrep '^class .+DocEvent' doc/models.py | tr '()' ' ' | awk '{printf $2 ","}')" + +echo -e "proxy: $proxy\n" +echo -e "names: $names\n" +echo -e "legacy:$legacy\n" +echo -e "events:$events\n" + +exclude="--exclude=$proxy,$names,$legacy" + +export PYTHONPATH="$PWD/.." + +echo "Validating..." +./manage.py validate + +echo "Dump tables" +./manage.py sql $apps > tables.sql +export PYTHONPATH=`dirname $PWD` +module=${PWD##*/} +export DJANGO_SETTINGS_MODULE=$module.settings +export graph +export title +echo "Generate model graph" +graph="models-with-names-and-events" +title="New IETF Database schema" +modelviz.py --exclude="$proxy,$legacy" --title "$title" $apps > $graph.dot && dot -Tpng $graph.dot > $graph.png + +echo "Generate new model without names" +graph="models-with-names" +title="New IETF Database schema, without name tables" +modelviz.py --exclude="$proxy,$legacy,$names" --title "$title" $apps > $graph.dot && dot -Tpng $graph.dot > $graph.png + +echo "Generate new model without names and subevents" +graph="models" +title="New IETF Database schema, without name tables and subevents" +modelviz.py --exclude="$proxy,$legacy,$names,$events" --title "$title" $apps > $graph.dot && dot -Tpng $graph.dot > $graph.png diff --git a/test/mkrelease b/bin/mkrelease similarity index 100% rename from test/mkrelease rename to bin/mkrelease