1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00
guile/scripts
2002-12-09 00:51:53 +00:00
..
.cvsignore *** empty log message *** 2001-05-09 16:38:45 +00:00
api-diff (group-diff): Also output +N and -N adds and subs details, respectively. 2002-05-19 05:12:04 +00:00
autofrisk Initial revision 2002-01-12 04:27:44 +00:00
ChangeLog *** empty log message *** 2002-12-09 00:51:53 +00:00
display-commentary (module-name->filename-frag, display-module-commentary): New procs. 2001-09-30 18:24:10 +00:00
doc-snarf In boilerplate, use -l$0. Thanks to Daniel Skarda. 2001-08-01 05:09:30 +00:00
frisk Fix typo in commentary; nfc. 2002-01-12 04:22:34 +00:00
generate-autoload In boilerplate, use -l$0. Thanks to Daniel Skarda. 2001-08-01 05:09:30 +00:00
lint Make (scripts lint) announce resolved module name. 2002-10-26 18:58:17 +00:00
Makefile.am * Makefile.am (subpkgdatadir): VERSION -> GUILE_EFFECTIVE_VERSION. 2002-12-09 00:46:01 +00:00
PROGRAM Update copyright; nfc. 2002-04-02 10:41:53 +00:00
punify (write-punily): Handle symbols with ":" prefix specially. 2001-11-29 00:01:54 +00:00
read-rfc822 Initial revision. 2002-05-13 10:12:14 +00:00
read-scheme-source (quoted?, clump): New procs, exported. 2001-10-06 06:44:48 +00:00
read-text-outline (display-outline-tree): No longer export this proc. 2002-04-06 01:55:20 +00:00
README In boilerplate, use -l$0. Thanks to Daniel Skarda. 2001-08-01 05:09:30 +00:00
scan-api (scan-api): No longer include timestamp. 2002-05-13 21:45:12 +00:00
snarf-check-and-output-texi (end-multiline): Use '*function-name*' instead of nonexisting 'name'. 2002-10-05 11:57:35 +00:00
snarf-guile-m4-docs * snarf-guile-m4-docs (display-texi): Strip off `# ' from start of 2002-03-08 13:19:42 +00:00
summarize-guile-TODO * summarize-guile-TODO (as-leaf): make #\: a char-set. 2002-10-05 04:11:51 +00:00
use2dot Autoload module (ice-9 getopt-long). 2002-01-12 04:27:16 +00:00

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]