Index: docs/code/Makefile ================================================================== --- docs/code/Makefile +++ docs/code/Makefile @@ -1,3 +1,12 @@ + +all : module-hierarchy.pdf + +deps.data : ../../*scm + cd ../..;csi -bq utils/deps.scm > docs/code/deps.data + +module-hierarchy.dot : preamble.dot deps.data postamble.dot + cat preamble.dot deps.data postamble.dot > module-hierarchy.dot + module-hierarchy.pdf : module-hierarchy.dot dot -Tpdf module-hierarchy.dot -o module-hierarchy.pdf Index: docs/code/module-hierarchy.dot ================================================================== --- docs/code/module-hierarchy.dot +++ docs/code/module-hierarchy.dot @@ -23,38 +23,148 @@ subgraph cluster_megatest { label="megatest"; rmtmod [label="rmt mod"]; - // httpmod [label="http-transportmod"]; - // commonmod +// servermod.scm +"sqlite3" -> "servermod"; +"commonmod" -> "servermod"; +"dbmod" -> "servermod"; +"tasksmod" -> "servermod"; +"mtargs" -> "servermod"; +"mtconfigf" -> "servermod"; +// vgmod.scm +"sqlite3" -> "vgmod"; +// rmtmod.scm +"sqlite3" -> "rmtmod"; +"ulex" -> "rmtmod"; +"commonmod" -> "rmtmod"; +"itemsmod" -> "rmtmod"; +"apimod" -> "rmtmod"; +"dbmod" -> "rmtmod"; +// dcommonmod.scm +"sqlite3" -> "dcommonmod"; +"mtconfigf" -> "dcommonmod"; +"gutilsmod" -> "dcommonmod"; +"commonmod" -> "dcommonmod"; +"servermod" -> "dcommonmod"; +"testsmod" -> "dcommonmod"; +"megamod" -> "dcommonmod"; +"subrunmod" -> "dcommonmod"; +"runsmod" -> "dcommonmod"; +"rmtmod" -> "dcommonmod"; +"dbmod" -> "dcommonmod"; +"canvas-draw" -> "dcommonmod"; +"canvas-draw-iup" -> "dcommonmod"; +"iup" -> "dcommonmod"; +"mtargs" -> "dcommonmod"; +// commonmod.scm +"sqlite3" -> "commonmod"; +"pkts" -> "commonmod"; +"mtconfigf" -> "commonmod"; +"mtargs" -> "commonmod"; +// dbmod.scm +"sqlite3" -> "dbmod"; +"commonmod" -> "dbmod"; +"keysmod" -> "dbmod"; +"files" -> "dbmod"; +"tasksmod" -> "dbmod"; +"odsmod" -> "dbmod"; +"mtargs" -> "dbmod"; +"mtconfigf" -> "dbmod"; +// pgdbmod.scm +"mtconfigf" -> "pgdbmod"; +"mtargs" -> "pgdbmod"; +"commonmod" -> "pgdbmod"; +// launchmod.scm +"sqlite3" -> "launchmod"; +"commonmod" -> "launchmod"; // archivemod.scm +"sqlite3" -> "archivemod"; "commonmod" -> "archivemod"; -// clientmod.scm -"commonmod" -> "clientmod"; -// configfmod.scm -// subrunmod.scm -"commonmod" -> "subrunmod"; -// ezstepsmod.scm -"commonmod" -> "ezstepsmod"; -// itemsmod.scm -"commonmod" -> "itemsmod"; -// gutilsmod.scm +// processmod.scm +"sqlite3" -> "processmod"; +// runsmod.scm +"base64" -> "runsmod"; +"commonmod" -> "runsmod"; +"dbmod" -> "runsmod"; +"itemsmod" -> "runsmod"; +"mtmod" -> "runsmod"; +"pgdbmod" -> "runsmod"; +"mtargs" -> "runsmod"; +"mtconfigf" -> "runsmod"; +"rmtmod" -> "runsmod"; +"servermod" -> "runsmod"; +"stml2" -> "runsmod"; +"subrunmod" -> "runsmod"; +"tasksmod" -> "runsmod"; +"testsmod" -> "runsmod"; // testsmod.scm +"sqlite3" -> "testsmod"; "commonmod" -> "testsmod"; "servermod" -> "testsmod"; "itemsmod" -> "testsmod"; "dbmod" -> "testsmod"; -// runconfigmod.scm -"commonmod" -> "runconfigmod"; -// keysmod.scm -"srfi-13" -> "keysmod"; -// launchmod.scm -"commonmod" -> "launchmod"; +"mtconfigf" -> "testsmod"; +"mtargs" -> "testsmod"; +// clientmod.scm +"sqlite3" -> "clientmod"; +"commonmod" -> "clientmod"; +// ezstepsmod.scm +"sqlite3" -> "ezstepsmod"; +"commonmod" -> "ezstepsmod"; +// gutilsmod.scm +"iup" -> "gutilsmod"; +"canvas-draw" -> "gutilsmod"; +// envmod.scm +"sqlite3" -> "envmod"; +"commonmod" -> "envmod"; +// http-transportmod.scm +"commonmod" -> "http-transportmod"; +"stml2" -> "http-transportmod"; +"apimod" -> "http-transportmod"; +"dbmod" -> "http-transportmod"; +"testsmod" -> "http-transportmod"; +"mtargs" -> "http-transportmod"; +"mtconfigf" -> "http-transportmod"; +// subrunmod.scm +"sqlite3" -> "subrunmod"; +"commonmod" -> "subrunmod"; +"mtconfigf" -> "subrunmod"; +// template-mod.scm +"sqlite3" -> "template-mod"; +"commonmod" -> "template-mod"; +// tasksmod.scm +"sqlite3" -> "tasksmod"; +"commonmod" -> "tasksmod"; +"mtconfigf" -> "tasksmod"; +"pgdbmod" -> "tasksmod"; +// configfmod.scm +"sqlite3" -> "configfmod"; +// treemod.scm +"iup" -> "treemod"; +// mtmod.scm +"sqlite3" -> "mtmod"; +"mtargs" -> "mtmod"; +"mtconfigf" -> "mtmod"; +"commonmod" -> "mtmod"; +"dbmod" -> "mtmod"; +"pgdbmod" -> "mtmod"; +"rmtmod" -> "mtmod"; +"servermod" -> "mtmod"; +"stml2" -> "mtmod"; +"subrunmod" -> "mtmod"; +"tasksmod" -> "mtmod"; +"testsmod" -> "mtmod"; +// odsmod.scm +"sqlite3" -> "odsmod"; +"commonmod" -> "odsmod"; // megamod.scm +"mtconfigf" -> "megamod"; "spiffy" -> "megamod"; "stml2" -> "megamod"; +"mtargs" -> "megamod"; "commonmod" -> "megamod"; "keysmod" -> "megamod"; "pgdbmod" -> "megamod"; "tasksmod" -> "megamod"; "dbmod" -> "megamod"; @@ -67,80 +177,24 @@ "testsmod" -> "megamod"; "servermod" -> "megamod"; "subrunmod" -> "megamod"; "itemsmod" -> "megamod"; "runsmod" -> "megamod"; -// odsmod.scm -"commonmod" -> "odsmod"; -// envmod.scm -"commonmod" -> "envmod"; -// http-transportmod.scm -"commonmod" -> "http-transportmod"; -"stml2" -> "http-transportmod"; -"apimod" -> "http-transportmod"; -"dbmod" -> "http-transportmod"; -"testsmod" -> "http-transportmod"; -// processmod.scm -// mtmod.scm -"commonmod" -> "mtmod"; -"dbmod" -> "mtmod"; -"pgdbmod" -> "mtmod"; -"rmtmod" -> "mtmod"; -"servermod" -> "mtmod"; -"stml2" -> "mtmod"; -"subrunmod" -> "mtmod"; -"tasksmod" -> "mtmod"; -"testsmod" -> "mtmod"; -// pgdbmod.scm -"commonmod" -> "pgdbmod"; -// runsmod.scm -"commonmod" -> "runsmod"; -"dbmod" -> "runsmod"; -"itemsmod" -> "runsmod"; -"mtmod" -> "runsmod"; -"pgdbmod" -> "runsmod"; -"rmtmod" -> "runsmod"; -"servermod" -> "runsmod"; -"stml2" -> "runsmod"; -"subrunmod" -> "runsmod"; -"tasksmod" -> "runsmod"; -"testsmod" -> "runsmod"; +// itemsmod.scm +"sqlite3" -> "itemsmod"; +"commonmod" -> "itemsmod"; // apimod.scm +"sqlite3" -> "apimod"; "commonmod" -> "apimod"; "dbmod" -> "apimod"; "servermod" -> "apimod"; -// dbmod.scm -"commonmod" -> "dbmod"; -"keysmod" -> "dbmod"; -"files" -> "dbmod"; -"tasksmod" -> "dbmod"; -"odsmod" -> "dbmod"; -// dcommonmod.scm -"gutilsmod" -> "dcommonmod"; -"commonmod" -> "dcommonmod"; -"testsmod" -> "dcommonmod"; -"megamod" -> "dcommonmod"; -"canvas-draw" -> "dcommonmod"; -"canvas-draw-iup" -> "dcommonmod"; -// tasksmod.scm -"commonmod" -> "tasksmod"; -"pgdbmod" -> "tasksmod"; -// template-mod.scm -"commonmod" -> "template-mod"; -// servermod.scm -"commonmod" -> "servermod"; -"dbmod" -> "servermod"; -"tasksmod" -> "servermod"; -// treemod.scm -// commonmod.scm -"pkts" -> "commonmod"; -// vgmod.scm -// rmtmod.scm -"commonmod" -> "rmtmod"; -"itemsmod" -> "rmtmod"; -"apimod" -> "rmtmod"; -"dbmod" -> "rmtmod"; +// runconfigmod.scm +"sqlite3" -> "runconfigmod"; +"commonmod" -> "runconfigmod"; +// keysmod.scm +"sqlite3" -> "keysmod"; +"srfi-13" -> "keysmod"; } } ADDED docs/code/postamble.dot Index: docs/code/postamble.dot ================================================================== --- /dev/null +++ docs/code/postamble.dot @@ -0,0 +1,5 @@ + +} + +} + ADDED docs/code/preamble.dot Index: docs/code/preamble.dot ================================================================== --- /dev/null +++ docs/code/preamble.dot @@ -0,0 +1,27 @@ +// Copyright 2006-2017, Matthew Welland. +// +// This file is part of Megatest. +// +// Megatest is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Megatest is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Megatest. If not, see . +// +digraph megatest_code_hierarchy { + ranksep=0.05; + // rankdir=LR + + node [shape=box,style=filled,fontname="clear",fontsize="10"]; + + subgraph cluster_megatest { + label="megatest"; + + rmtmod [label="rmt mod"]; Index: utils/deps.scm ================================================================== --- utils/deps.scm +++ utils/deps.scm @@ -17,16 +17,21 @@ (if (eof-object? l) data (begin (regex-case l - ("^\\s*\\(import\\s+([^\\s]+)\\).*" (x md ) - (print "\"" md "\" -> \"" modname "\";"))) + ("^\\s*\\((import|use)\\s+([^\\s]+)\\).*" + (x junk md )(print "\"" md "\" -> \"" modname "\";")) + ;; now get entries with prefix + ("^\\s*\\((import|use)\\s+\\(prefix\\s+([^\\s]+)\\s+.*\\).*" + (x junk md ) (print "\"" md "\" -> \"" modname "\";")) + ) (loop (read-line))))))))) (define (do-all-mod-files) - (let ((modfiles (get-files "*mod.scm"))) + (let ((modfiles (append ;; '("megatest.scm" "dashboard.scm") + (get-files "*mod.scm")))) (for-each (lambda (mfile) (print "// " mfile) (get-deps mfile)) modfiles)))