在Shake中查看控制台进度消息

时间:2014-07-27 12:03:17

标签: shake-build-system

我正在使用Shake,调用wget来下载文件。如果我在命令行上这样做,我会看到一个单行进度条,但是当从Shake调用时,我会看到许多点。举个例子:

shake shakeOptions $
    action
       (cmd "wget http://hackage.haskell.org/packages/index.tar.gz" :: Action ())

我希望这能显示单行进度条。

1 个答案:

答案 0 :(得分:0)

解决方案是:

shake shakeOptions{shakeLineBuffering=False} $
    action
        (cmd "wget http://hackage.haskell.org/packages/index.tar.gz --progress=bar:force" :: Action ())

这里有两件事:

1)wget检测到它没有直接发送到控制台(因为cmd使用管道捕获输出),并关闭进度条。使用wget,您可以使用--progress=bar:force重新启用。

2)一旦我完成了,进度条实际上并没有显示, 因为Shake默认启用行缓冲(它有助于并行运行的命令显示更少的交错输出)并且进度条仅在内部更新 一条线。您可以通过设置选项来解决此问题 shakeLineBuffering=False