The cmdArgs package for Haskell provide command option parsing.
based on this page from the docs http://hackage.haskell.org/packages/archive/cmdargs/0.10.3/doc/html/System-Console-CmdArgs-Explicit.html#g:4 and its source http://hackage.haskell.org/packages/archive/cmdargs/0.10.3/doc/html/src/System-Console-CmdArgs-Explicit-Complete.html#Complete
It seem able to support bash completion, but I was not able to made it work with the Implicit version of the parser. http://hackage.haskell.org/packages/archive/cmdargs/0.10.3/doc/html/System-Console-CmdArgs-Implicit.html
Does any one have any example of doing this?
Edit added a better example
if I have the program
{-# LANGUAGE DeriveDataTypeable #-}
import System.Console.CmdArgs
data Sample = Sample {hello :: String}
deriving (Show, Data, Typeable)
sample = Sample{hello = def}
main = print =<< cmdArgs sample
with parses the following options
The sample program
sample [OPTIONS]
Common flags:
-h --hello=ITEM
-? --help Display help message
-V --version Print version information
how do use the bash completion feature of cmdArgs?
To use the bash completion, compile the above program as sample
, place sample
on your $PATH
then run:
sample --help=bash > sample.comp
source sample.comp
You can now type in sample --ver
, press tab, and it will complete to sample --version
.
There are a couple of infelicities in the completion, in particular the program must be on your $PATH
and if you are on Windows you need to run sample.comp
through dos2unix
. It is also entirely undocumented, which sHould be fixed by the package author.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With