[[tags: egg]]
== SRFI 193
[[toc:]]
=== Introduction
This egg implements SRFI 193: Command line.
=== Documentation
==== Command procedures
(command-line [string-list])
Like the standard {{command-line}} procedure in R7RS and R6RS, this
gives the command line as list of strings, with the first element
(always present) being the command name and the remaining elements (if
any) are command arguments. Unlike RnRS {{command-line}}, this is a
parameter that can be bound to another value by the Scheme programmer
if desired, for example for subcommand processing.
The value of this parameter should be a list of one or more strings at
all times. Neither the strings nor the list should not be mutated. If
the parameter is rebound to another list, the new list may share
structure with the old list.
The default value of the parameter is more precisely specified than
the value of RnRS {{command-line}}. When evaluating code in the csi
REPL, such as via {{load}}, the command line is a one-element list
whose only element is a zero-length string.
* When running a standalone program compiled via csi, the first
element is the operating system's {{argv[0]}} and the remaining
elements are {{argv[1]}} and up. Howeve, {{-:}} arguments that control
the Chicken runtime system are not part of the list.
(command-name)
Returns a simplified version of {{(car (command-line))}}, respecting
the current binding of the {{command-line}} parameter. This is
typically something suitable to display as the program name. For
example, {{/path/to/foo.scm}} is simplified into {{foo}}.
However, if {{(car (command-line))}} is a zero-length string (such as
at the csi REPL), {{#f}} is returned to signify "not a command".
(command-args)
Returns {{(cdr (command-line))}}, respecting the current binding of
the {{command-line}} parameter.
==== Script procedures
(script-file [string?])
If running a Scheme source file in csi, returns an absolute pathname
of that file as a string. Otherwise returns {(#f}}.
In Chicken, this is actually a parameter object and may be set by the
user.
(script-directory)
Returns {{(script-file)}} without the filename part, respecting the
current binding of the {{script-file}} parameter. Returns {{#f}} in
any situation where {{(script-file)}} returns {{#f}}.
Returned strings end with a directory separator so {{string-append}}
can be used to build pathnames to refer to files in the same directory
as the script.
=== Version History
* 0.1: First release.
=== Author
Lassi Kortela
=== License
Copyright 2020 Lassi Kortela
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.