1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
((value command ponysay)
(default (arg MESSAGE) (files -0) (suggest message) (desc 'Message spoken by the pony'))
(multiple unargumented
((options -h --help) (complete --help) (desc 'Show summary of options'))
((options -v --version) (complete --version) (desc 'Show version of program'))
((options -c --compress) (complete --compress) (desc 'Compress message'))
((options -l --list) (complete --list) (desc 'List all MLP:FiM ponies'))
((options -L --altlist --symlist) (complete --symlist) (desc 'List all MLP:FiM ponies, with symlink mapping'))
((options +l ++list) (complete ++list) (desc 'List all non-MLP:FiM ponies'))
((options +K ++altlist ++symlist) (complete ++symlist) (desc 'List all non-MLP:FiM ponies, with symlink mapping'))
((options -A --all) (complete --all) (desc 'List all ponies'))
((options +A ++all --altall --symall) (complete --symall) (desc 'List all ponies, with symlink mapping'))
((options -b --bubblelist --balloonlist) (complete --balloonlist) (desc 'List all balloon styles'))
((options -o --pony-only --ponyonly) (complete --pony-only) (desc 'Print just the pony'))
((options -X --256-colours --256colours --x-colours) (desc 'Use xterm colours'))
((options -V --tty-colours --ttycolours --vt-colours) (desc 'Use linux vt colours'))
((options -K --kms-colours --kmscolours) (desc 'Utilise kms support'))
)
; in files, -0 mean to not accept files, you can use to before other arguments to disallow them,
; -a means accept all files, -d → directory, -s → socket, -D → door, -f → regular or pipe,
; -l → symlink (allowed by default on all), -r → regular, -b → block device,
; -c → character device, -S → block device or character device, -p → pipe
(multiple argumented
((options -f --file --pony) (complete --file --pony) (arg PONY) (suggest pony-f) (files -f *.pony) (desc 'Specify the pony that should printed'))
((options +f ++file ++pony) (complete ++file ++pony) (arg PONY) (suggest pony+f) (files -f *.pony) (desc 'Specify the extrapony that should printed'))
((options -q --quote) (complete --quote) (arg PONY) (suggest pony-q) (files -f *.pony) (desc 'Specify the pony that should quote herself'))
((options -b --bubble --balloon) (complete --balloon) (arg STYLE) (suggest balloon) (files -f (case (ponysay *.say) (ponyhink *.think))) (desc 'Specify message balloon style'))
((options -W --wrap) (complete --wrap) (arg COLUMN) (suggest wrap) (files -0) (desc 'Specify wrapping column'))
((options +c --colour) (complete --colour) (arg ANSI-COLOUR) (files -0) (desc 'Specify colour of the balloon, balloon link and message'))
((options --colour-bubble --colour-balloon) (arg ANSI-COLOUR) (files -0) (desc 'Specify colour of the balloon'))
((options --colour-link) (arg ANSI-COLOUR) (files -0) (desc 'Specify colour of the balloon link'))
((options --colour-msg --colour-message) (arg ANSI-COLOUR) (files -0) (desc 'Specify colour of the message'))
((options --colour-pony) (arg ANSI-COLOUR) (files -0) (desc 'Specify colour of the pony (if uncoloured)'))
((options --colour-wrap --colour-hyphen) (arg ANSI-COLOUR) (files -0) (desc 'Specify addition colour of wrapping hyphen'))
)
; `bind` copies everything that is missing except `options` and `complete`
(variadic (options --f --files --ponies) (bind -f) (desc 'Specify the ponies that may be printed'))
(variadic (options ++f ++files ++ponies) (bind +f) (desc 'Specify the extraponies that may be printed'))
(variadic (options --q --quotes) (bind -q) (desc 'Specify the pony that may quote themself'))
(suggestion message (verbatim MESSAGE)
)
(suggestion pony-f (exec "'/usr/bin/ponysay'" --onelist)
(no-exec ls "'/usr/share/ponysay/ponies'" .pony)
)
(suggestion pony+f (exec "'/usr/bin/ponysay'" ++onelist)
(no-exec ls "'/usr/share/ponysay/extraponies'" .pony)
)
(suggestion pony-q (exec "'/usr/bin/ponysay'" --quoters)
(no-exec ls "'/usr/share/ponysay/ponies'" .pony)
)
(suggestion balloon (exec "'/usr/bin/ponysay'" --balloonlist)
(no-exec ls "'/usr/share/ponysay/balloons'" (case (ponysay .say) (ponythink .think)))
)
(suggestion wrap (verbatim none inherit 100 60)
(calc (pipe (stdin-fd (stty size) (stderr))
(cut -d ' ' -f 2)
) - 10
)
)
; in addition to `pipe`(|) the following are also possible: `fullpipe`(|&) `cat`(;) `and`(&&) `or`(||)
; in addition to `stdin-fd`(<&) the following are also possible: `stdout-fd` `stderr-fd` `fd-fd` `stdin` `stdout` `stderr` `fd`
)
|