Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cmdArgs bash completion

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?

like image 437
Bilal Syed Hussain Avatar asked May 31 '13 18:05

Bilal Syed Hussain


1 Answers

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.

like image 151
Neil Mitchell Avatar answered Sep 19 '22 22:09

Neil Mitchell