Thien-Thi Nguyen 395afce9f2 [maint] Remove unused script guile-doc-snarf. 14 years ago
..
ChangeLog-2008 6d66647d5b guile-tools is a scheme script that loads scheme modules 16 years ago
PROGRAM.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago
README 6d66647d5b guile-tools is a scheme script that loads scheme modules 16 years ago
api-diff.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago
autofrisk.scm a2ca725212 Remove unused variables in ice-9/goops/srfi/scripts. 15 years ago
compile.scm bce5cb5641 Provide Guile-friendly `coding:' meta-data. 15 years ago
disassemble.scm 8141fc3b46 Fix "guile-tools disassemble". 16 years ago
display-commentary.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago
doc-snarf.scm 395afce9f2 [maint] Remove unused script guile-doc-snarf. 14 years ago
frisk.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago
generate-autoload.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago
lint.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago
punify.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago
read-rfc822.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago
read-scheme-source.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago
read-text-outline.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago
scan-api.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago
snarf-check-and-output-texi.scm 445f31fc06 fix doc snarfing with fedora 12 15 years ago
snarf-guile-m4-docs.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago
summarize-guile-TODO.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago
use2dot.scm 83ba2d3750 Complete changing license to LGPLv3+ 16 years ago

README

Overview and Usage
------------------

This directory contains Scheme programs, some useful in maintaining Guile.
On "make install", these programs are copied to PKGDATADIR/VERSION/scripts.

You can invoke a program from the shell, or alternatively, load its file
as a Guile Scheme module, and use its exported procedure(s) from Scheme code.
Typically for any PROGRAM:

(use-modules (scripts PROGRAM))
(PROGRAM ARG1 ARG2 ...)

For programs that write to stdout, you might try, instead:

(use-modules (scripts PROGRAM))
(with-output-to-string (lambda () (PROGRAM ARG1 ARG2 ...)))

Note that all args must be strings.

To see PROGRAM's commentary, which may or may not be helpful:

(help (scripts PROGRAM))

To see all commentaries and module dependencies, try: "make overview".

If you want to try the programs before installing Guile, you will probably
need to set environment variable GUILE_LOAD_PATH to be the parent directory.
This can be done in Bourne-compatible shells like so:

GUILE_LOAD_PATH=`(cd .. ; pwd)`
export GUILE_LOAD_PATH

[FIXME: Can someone supply the csh-compatible equivalent?]



How to Contribute
-----------------

See template file PROGRAM for a quick start.

Programs must follow the "executable module" convention, documented here:

- The file name must not end in ".scm".

- The file must be executable (chmod +x).

- The module name must be "(scripts PROGRAM)". A procedure named PROGRAM w/
signature "(PROGRAM . args)" must be exported. Basically, use some variant
of the form:

(define-module (scripts PROGRAM)
:export (PROGRAM))

Feel free to export other definitions useful in the module context.

- There must be the alias:

(define main PROGRAM)

However, `main' must NOT be exported.

- The beginning of the file must use the following invocation sequence:

#!/bin/sh
main='(module-ref (resolve-module '\''(scripts PROGRAM)) '\'main')'
exec ${GUILE-guile} -l $0 -c "(apply $main (cdr (command-line)))" "$@"
!#

Following these conventions allows the program file to be used as module
(scripts PROGRAM) in addition to as a standalone executable. Please also
include a helpful Commentary section w/ some usage info.


[README ends here]