shake支持bash完成吗?

shake支持bash完成吗?,bash,haskell,autocomplete,shake-build-system,Bash,Haskell,Autocomplete,Shake Build System,我正在学习使用替换Makefile,不知道shake是否支持bash完成 例如,一个简单的(不做任何事)Makefile all : clean: 将选项卡完成目标显示为 $ make <TAB> all clean 我期望类似于或Python的东西目前还没有,但有一个标签可以添加它:据我所知,自动完成并不是特定于程序的:操作系统有一套规则来完成自动完成。所以你不能在所谓的“程序级”上

我正在学习使用替换Makefile,不知道
shake
是否支持
bash完成

例如,一个简单的(不做任何事)
Makefile

all :

clean:
将选项卡完成目标显示为

$ make <TAB>                                           
all    clean 

我期望类似于或Python的东西目前还没有,但有一个标签可以添加它:

据我所知,自动完成并不是特定于程序的:操作系统有一套规则来完成自动完成。所以你不能在所谓的“程序级”上这样做,因为操作系统不能从程序二进制文件中派生出来。@WillemVanOnsem是的,但是告诉操作系统要求程序完成相对容易(尽管有些黑客)。例如,
cabal
通过一些命令行标志使用此路径(忘记了,它没有真正记录)。我不知道在shake中使用了什么命令解析库,但似乎有bash completion,因为shake和cmdarg都是用haskell编写的,我会说@ndmitchell会使用它,但是检查文档时,shake不依赖于cmdargs它适用于
bash
,因为您为
make
定义了一个对象,该对象表示在完成
make
的第一个参数时在Makefile中查找与
^.*:
匹配的字符串。您需要为
shake
(或者更具体地说,
build
)编写(或查找)一组类似的定义。
import Development.Shake

main :: IO ()
main = shakeArgs shakeOptions{shakeFiles="_build"} $ do
    phony "all" $ return ()

    phony "clean" $ do
      putNormal "Cleaning files in _build"
      removeFilesAfter "_build" ["//*"]