aboutsummaryrefslogtreecommitdiff
path: root/buildtools/graphviz-sql.sh
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2011-10-19 00:33:20 +0000
committerRob Austein <sra@hactrn.net>2011-10-19 00:33:20 +0000
commit4175936042112fb797481dc5a23a153572f08b8b (patch)
tree6a31c56d71e547e0b70c84a72ac737243aed4d81 /buildtools/graphviz-sql.sh
parente35e9b57df45c8dc8ef00f43efc3c0e0b6ab88c7 (diff)
Wrap SQL schemas up so rpki-sql-setup doesn't have to be run in the
build tree (see #8). This appears to work properly but needs more testing, leaving ticket open for now. Also cleaned up a few things that should have moved from scripts/ to buildtools/ a long time ago. svn path=/trunk/; revision=4056
Diffstat (limited to 'buildtools/graphviz-sql.sh')
-rw-r--r--buildtools/graphviz-sql.sh41
1 files changed, 41 insertions, 0 deletions
diff --git a/buildtools/graphviz-sql.sh b/buildtools/graphviz-sql.sh
new file mode 100644
index 00000000..21a81146
--- /dev/null
+++ b/buildtools/graphviz-sql.sh
@@ -0,0 +1,41 @@
+#!/bin/sh -
+# $Id$
+
+# Copyright (C) 2007--2008 American Registry for Internet Numbers ("ARIN")
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ARIN DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL ARIN BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+# This uses the SQL::Translator package (aka "SQL Fairy") to parse
+# a MYSQL schema and diagram the result using GraphViz.
+#
+# SQL::Translator appears to be pretty good at analyzing SQL, but is
+# badly confused about how to format record labels in the "dot"
+# language. I should send the author a patch, but simplest solution
+# for now is just to whack sqlt-graph's broken output into shape.
+#
+# On FreeBSD, SQL Fairy is /usr/ports/databases/p5-SQL-Translator.
+
+sqlt-graph --db MySQL --output-type canon --show-datatypes --show-constraints $1 |
+SOURCE="$1" perl -0777 -pe '
+ s/\\\n//g;
+ s/ +/ /g;
+ s/\\\|/|/g;
+ s/\\{([a-z0-9_]+)\|/${1}|{/gi;
+ s/-\\ +//g;
+ s/\\ \\l/|/g;
+ s/\|\\l \\}/}/g;
+ s/\|\\}/}/g;
+ s/{\n/{\n\tedge [arrowtail=none, arrowhead=crow];\n/;
+ s/\[arrowhead=normal\]/[arrowtail=none, arrowhead=crow]/g;
+ s=^=// Automatically generated from $ENV{SOURCE}\n\n=;
+'