SYNOPSIS
cli-generate [ -c | -h | -m | -w ] FILENAME.cliDESCRIPTION
Operation
cli-generate reads in a CLI (command line interface) description file, parses it into its various sections, and prints out one of a set of output files. In typical usage, that output would be directed to a file and later compiled or included in other sources.The CLI file (named PROGRAM.cli) is divided into two parts, a header (formatted much like a standard mail header) and a series of sections. Headers and sections other than those specified below are ignored. All headers and sections are optional.
File Format
file = header "\n" *section header = *(header-line "\n") header-line = header-field ":" whitespace value whitespace = *(SPACE / TAB) section = "[" name "]" "\n" lines lines = *( line "\n" )
Headers
- Description:
- A one-line description of what the program does.
- Include:
- Add C statements to #include the given source file. Must be formatted as either <file> or file
- Min:
- The minimum number of allowed non-option arguments. Defaults to 0.
- Max:
- The maximum number of allowed non-option arguments. Negative values mean unlimited. Defaults to -1.
- Show-Pid:
- Set to non-zero if the resulting program is to show its PID with every output message. Defaults to 0.
- Usage:
- A one-line description of the intended usage. Defaults to empty.
Section Names
- [prefix]
- The text in this section is shown in the command usage before the options description.
- [options]
- The list of options this program accepts. See below for their format.
- [suffix]
- The text in this section is shown in the command usage after the options description.
- [description]
- [return value]
- [errors]
- [examples]
- [environment]
- [files]
- [see also]
- [notes]
- [caveats]
- [diagnostics]
- [bugs]
- [restrictions]
- [author]
- [history]
- These sections are formatted and copied into the man page in the standard order.
Options Format
options = *(option / separator) option = option1 "\n" option2 "\n" *(line "\n") option1 = [shortopt] [longopt] type ["=" flag-value] variable ["=" init] option2 = helpstr ["=" default] separator = "-- " text "\n" shortopt = "-" character longopt = "--" word type = "FLAG" / "COUNTER" / "INTEGER" / "UINTEGER" / "STRING" / "STRINGLIST" / "FUNCTION"
If not specified, flag-value and init are 0, and default is empty.
Formatting
Except for [prefix], [options], and [suffix], all of the sections support formatting instructions similar to that of TeXinfo (but greatly simplified).- @strong{text}
- Use "strong" (bold) text.
- @command{text}
- Indicate the name of a command.
- @option{text}
- Indicate a command-line option.
- @emph{text}
- Use "emphatic" (italicized) text.
- @var{text}
- Indicate a metasyntactic variable.
- @env{text}
- Indicate an environment variable.
- @file{text}
- Indicate the name of a file.
- @code{text}
- Indicate text that is a literal example of a piece of a program.
- @samp{text}
- Indicate text that is a literal example of a sequence of characters.
- @example
- @end example
- The text between these two tags is indented.
- @verbatim
- @end verbatim
- Everything between these two tags is passed as-is (verbatim) to the output.
- @table @format
- @end table
- Mark up a two-column table, or "definition list".
- @item paragraph
- Add an item to a table. The @item starts a paragraph that will be the actual list entry. Any subsequent paragraphs will be typeset seperately.
OPTIONS
- -c
- Output C source code.
- -h
- Output C header file.
- -m
- Output a UNIX man page.
- -w
- Output HTML (web) markup.
EXAMPLES
Here is a sample CLI file, containing many of the described elements.
Min: 1 Max: 1 Usage: PATH Description: Create a file. Show-Pid: 0 Include: <stdio.h> [prefix] If the given PATH is a directory, it is suffixed with another name. [description] @program generates a new random file from a variety of sources including @command{ls} and @command{ps} output. If the given @option{PATH} is a directory, it is suffixed with another name of my choosing. [options] -v --verbose FLAG=1 opt_verbose -t --type STRING opt_type = "type1" The type of the file to generate. = type1 Possible types for this include @option{type1} and @option{base64}.