0

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

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

我希望它显示单行进度条。

4

1 回答 1

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

于 2014-07-27T12:03:16.977 回答