summaryrefslogtreecommitdiff
path: root/scripts/use2dot
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/use2dot')
-rwxr-xr-xscripts/use2dot113
1 files changed, 0 insertions, 113 deletions
diff --git a/scripts/use2dot b/scripts/use2dot
deleted file mode 100755
index dff341744..000000000
--- a/scripts/use2dot
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/bin/sh
-# aside from this initial boilerplate, this is actually -*- scheme -*- code
-main='(module-ref (resolve-module '\''(scripts use2dot)) '\'main')'
-exec ${GUILE-guile} -l $0 -c "(apply $main (cdr (command-line)))" "$@"
-!#
-;;; use2dot --- Display module dependencies as a DOT specification
-
-;; Copyright (C) 2001 Free Software Foundation, Inc.
-;;
-;; This program 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 2, or
-;; (at your option) any later version.
-;;
-;; This program 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 this software; see the file COPYING. If not, write to
-;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
-;; Boston, MA 02111-1307 USA
-
-;;; Author: Thien-Thi Nguyen
-
-;;; Commentary:
-
-;; Usage: use2dot [OPTIONS] [FILE ...]
-;; Display to stdout a DOT specification that describes module dependencies
-;; in FILEs.
-;;
-;; A top-level `use-modules' form or a `:use-module' `define-module'-component
-;; results in a "solid" style edge.
-;;
-;; An `:autoload' `define-module'-component results in a "dotted" style edge
-;; with label "N" indicating that N names are responsible for triggering the
-;; autoload. [The "N" label is not implemented.]
-;;
-;; A top-level `load' or `primitive-load' form results in a a "bold" style
-;; edge to a node named with either the file name if the `load' argument is a
-;; string, or "[computed in FILE]" otherwise.
-;;
-;; Options:
-;; -m, --default-module MOD -- Set MOD as the default module (for top-level
-;; `use-modules' forms that do not follow some
-;; `define-module' form in a file). MOD should be
-;; be a list or `#f', in which case such top-level
-;; `use-modules' forms are effectively ignored.
-;; Default value: `(guile-user)'.
-
-;;; Code:
-
-(define-module (scripts use2dot)
- :autoload (ice-9 getopt-long) (getopt-long)
- :use-module ((srfi srfi-13) :select (string-join))
- :use-module ((scripts frisk)
- :select (make-frisker edge-type edge-up edge-down))
- :export (use2dot))
-
-(define *default-module* '(guile-user))
-
-(define (q s) ; quote
- (format #f "~S" s))
-
-(define (vv pairs) ; => ("var=val" ...)
- (map (lambda (pair)
- (format #f "~A=~A" (car pair) (cdr pair)))
- pairs))
-
-(define (>>header)
- (format #t "digraph use2dot {\n")
- (for-each (lambda (s) (format #t " ~A;\n" s))
- (vv `((label . ,(q "Guile Module Dependencies"))
- ;;(rankdir . LR)
- ;;(size . ,(q "7.5,10"))
- (ratio . fill)
- ;;(nodesep . ,(q "0.05"))
- ))))
-
-(define (>>body edges)
- (for-each
- (lambda (edge)
- (format #t " \"~A\" -> \"~A\"" (edge-down edge) (edge-up edge))
- (cond ((case (edge-type edge)
- ((autoload) '((style . dotted) (fontsize . 5)))
- ((computed) '((style . bold)))
- (else #f))
- => (lambda (etc)
- (format #t " [~A]" (string-join (vv etc) ",")))))
- (format #t ";\n"))
- edges))
-
-(define (>>footer)
- (format #t "}"))
-
-(define (>> edges)
- (>>header)
- (>>body edges)
- (>>footer))
-
-(define (use2dot . args)
- (let* ((parsed-args (getopt-long (cons "use2dot" args) ;;; kludge
- '((default-module
- (single-char #\m) (value #t)))))
- (=m (option-ref parsed-args 'default-module *default-module*))
- (scan (make-frisker `(default-module . ,=m)))
- (files (option-ref parsed-args '() '())))
- (>> (reverse ((scan files) 'edges)))))
-
-(define main use2dot)
-
-;;; use2dot ends here