diff options
-rw-r--r-- | doc/ref/tools.texi | 33 | ||||
-rw-r--r-- | module/scripts/README | 23 |
2 files changed, 12 insertions, 44 deletions
diff --git a/doc/ref/tools.texi b/doc/ref/tools.texi index 2f4f59ac9..7a98884d8 100644 --- a/doc/ref/tools.texi +++ b/doc/ref/tools.texi @@ -303,14 +303,11 @@ is rather byzantine, so for now @emph{NO} doc snarfing programs are installed. @cindex executable modules @cindex scripts -When Guile is installed, in addition to the @code{(ice-9 FOO)} modules, -a set of @dfn{executable modules} @code{(scripts BAR)} is also installed. -Each is a regular Scheme module that has some additional packaging so -that it can be called as a program in its own right, from the shell. For this -reason, we sometimes use the term @dfn{script} in this context to mean the -same thing. - -@c wow look at this hole^! variable-width font users eat your heart out. +When Guile is installed, in addition to the @code{(ice-9 FOO)} modules, a set +of @dfn{guile-tools modules} @code{(scripts BAR)} is also installed. Each is +a regular Scheme module that has some additional packaging so that it can be +used by guile-tools, from the shell. For this reason, we sometimes use the +term @dfn{script} in this context to mean the same thing. As a convenience, the @code{guile-tools} wrapper program is installed along w/ @code{guile}; it knows where a particular module is installed and calls it @@ -346,17 +343,11 @@ executable module. Feel free to skip to the next chapter. See template file @code{PROGRAM} for a quick start. -Programs must follow the @dfn{executable module} convention, documented here: +Programs must follow the @dfn{guile-tools} convention, documented here: @itemize @item -The file name must not end in ".scm". - -@item -The file must be executable (chmod +x). - -@item 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: @@ -377,20 +368,10 @@ There must be the alias: However, `main' must NOT be exported. -@item -The beginning of the file must use the following invocation sequence: - -@example -#!/bin/sh -main='(module-ref (resolve-module '\''(scripts PROGRAM)) '\'main')' -exec $@{GUILE-guile@} -l $0 -c "(apply $main (cdr (command-line)))" "$@@" -!# -@end example - @end itemize Following these conventions allows the program file to be used as module -@code{(scripts PROGRAM)} in addition to as a standalone executable. Please +@code{(scripts PROGRAM)} in addition to being invoked by guile-tools. Please also include a helpful Commentary section w/ some usage info. @c tools.texi ends here diff --git a/module/scripts/README b/module/scripts/README index 56dd286fb..cb397f5d2 100644 --- a/module/scripts/README +++ b/module/scripts/README @@ -4,9 +4,9 @@ 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: +You can use guile-tools to 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 ...) @@ -22,8 +22,6 @@ 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: @@ -40,11 +38,7 @@ 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). +Programs must follow the "guile-tools" convention, documented here: - The module name must be "(scripts PROGRAM)". A procedure named PROGRAM w/ signature "(PROGRAM . args)" must be exported. Basically, use some variant @@ -61,15 +55,8 @@ Programs must follow the "executable module" convention, documented here: 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 +(scripts PROGRAM) in addition to being invoked by guile-tools. Please also include a helpful Commentary section w/ some usage info. |