You are looking at historical revision 39069 of this page. It may differ significantly from its current revision.

SRFI 193

Introduction

This egg implements SRFI 193: Command line.

Documentation

Command

[parameter] (command-line [string-list])

Like the standard command-line procedure in R7RS and R6RS, this gives the command line as list of strings. The first element (always present) is 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 be mutated. If the parameter is rebound to another list, the new list is permitted to 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, the command line is a one-element list whose only element is a zero-length string.

When running a standalone program compiled via csc, the first element is the operating system's argv[0] and the remaining elements are argv[1] and up. However, any -: arguments that give options for the Chicken runtime system are not part of the list.

[procedure] (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".

[procedure] (command-args)

Returns (cdr (command-line)), respecting the current binding of the command-line parameter.

Script

[parameter] (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.

[procedure] (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

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.