aboutsummaryrefslogblamecommitdiffstats
path: root/doc/example
blob: d1e6b68b8f0d3078405ac5245cb86758d291a0dd (plain) (tree)
1
2
3
4
                        

                                                                                                
                              













                                                                                                                                              

         
                                                                                                        
                                                                                                                                                                               
                            


                                                                                                                                                                                  
                                                                                                                                                                                                        






                                                                                                                                                                                               

         
                                                                                  



                                                                                                                

                                              









                                                                                 
                                                                                                                 
         
                                                          
                                                                       
                                                         


                                        

                                                                                                                                       

 
((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
	(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`
)