Initial commit
This commit is contained in:
59
README
Normal file
59
README
Normal file
@@ -0,0 +1,59 @@
|
||||
```
|
||||
[1]: . . .-- . . . .
|
||||
[2]: |\ /| |-- |\| | |
|
||||
[3]: ' ' ' '-- ' ' '-'
|
||||
[0]: AGPLv3 2025
|
||||
```
|
||||
|
||||
## Build
|
||||
|
||||
```sh
|
||||
make
|
||||
```
|
||||
|
||||
menu(1) is a single Rust source file with no dependencies, and can be compiled
|
||||
on its own with rustc(1). It's recommended to run the test program:
|
||||
|
||||
```sh
|
||||
make test
|
||||
|
||||
# or test using menu(1)'s shebang
|
||||
./test
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
menu [file]
|
||||
```
|
||||
|
||||
If `file` is given, menu(1) reads its menu entries from `file` instead of
|
||||
standard input.
|
||||
|
||||
|
||||
## Menu format
|
||||
|
||||
Input is ignored until menu(1) reads two consecutive newlines (an empty line).
|
||||
This is to provide room for commentary or a shebang (`#!/usr/bin/env menu` is
|
||||
recommended). Following the two newlines, menu(1) will interpret input as a
|
||||
stream of menu entries.
|
||||
|
||||
A menu entry begins with its text section, which is the section printed to
|
||||
display the menu option.
|
||||
|
||||
Currently, the text section ends with a newline only, but in later versions the
|
||||
text section will be able to be extended across multiple lines if they are
|
||||
indented - so a newline followed by a character that isn't the horizontal tab.
|
||||
|
||||
The attributes section follows the text section. The attributes section ends
|
||||
with a single newline. Text including and following a hash in the attributes
|
||||
section will be ignoroed.
|
||||
|
||||
The command section follows the attributes section. The command section is
|
||||
run as a single argument following the invocation `$ sh -c`, like the C
|
||||
standard library's system(3). Each line in the command section is preceded by
|
||||
a horizontal tab, which is removed from the argument; if a line in the command
|
||||
section is not preceded by a tab, the omission is considered a syntax error (a
|
||||
"naked line") and menu(1) exits unsuccessfully. The command section ends with
|
||||
two consecutive newlines.
|
||||
Reference in New Issue
Block a user