0

wgetファイルをダウンロードするために呼び出して、シェイクを使用しています。コマンド ラインでこれを行うと、1 行のプログレス バーが表示されますが、Shake から呼び出すと、多数のドットの行が表示されます。例として:

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

1行の進行状況バーを表示したいと思います。

4

1 に答える 1

0

解決策は次のとおりです。

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

ここでは次の 2 つのことが行われています。

1)wgetコンソールに直接送信していないことを検出し(cmdパイプを使用して出力をキャプチャするため)、進行状況バーをオフにします。ではwget、 でオンに戻すことができます--progress=bar:force

2) これを行っても、実際には進行状況バーは表示されません。これは、Shake がデフォルトで行バッファリングをオンにし (並行して実行されるコマンドがインターリーブされた出力を少なく表示するのに役立ちます)、進行状況バーが 1 行内でのみ更新されるためです。オプションを設定することで修正できます shakeLineBuffering=False

于 2014-07-27T12:03:16.977 に答える