Завершение cmdArgs Bash

Пакет cmdArgs для Haskell обеспечивает разбор параметров команды.

на основе этой страницы из документов http://hackage.haskell.org/packages/archive/cmdargs/0.10.3/doc/html/System-Console-CmdArgs-Explicit.html и его источника http://hackage.haskell.org/packages/archive/cmdargs/0.10.3/doc/html/src/System-Console-CmdArgs-Explicit-Complete.html

Кажется, он может поддерживать завершение bash, но я не смог заставить его работать с неявной версией синтаксического анализатора. http://hackage.haskell.org/packages/archive/cmdargs/0.10.3/doc/html/System-Console-CmdArgs-Implicit.html

Есть ли у кого-нибудь такой пример?

Edit добавил лучший пример

если у меня есть программа

{-# LANGUAGE DeriveDataTypeable #-}
import System.Console.CmdArgs

data Sample = Sample {hello :: String}
              deriving (Show, Data, Typeable)

sample = Sample{hello = def}

main = print =<< cmdArgs sample

с разборами следующих опций

The sample program

sample [OPTIONS]

Common flags:
  -h --hello=ITEM
  -? --help        Display help message
  -V --version     Print version information

как использовать функцию завершения bash в cmdArgs?

1 ответ

Решение

Чтобы использовать завершение bash, скомпилируйте вышеуказанную программу как sample, место sample на ваше $PATH затем запустите:

sample --help=bash > sample.comp
source sample.comp

Теперь вы можете ввести sample --verнажмите вкладку, и он завершит sample --version,

В завершении есть пара неудач, в частности, программа должна быть на вашем $PATH и если вы используете Windows, вам нужно запустить sample.comp через dos2unix, Это также полностью недокументировано, что должно быть исправлено автором пакета.

Другие вопросы по тегам