在cli中使用进度条

时间:2018-05-24 12:56:21

标签: go command-line progress-bar

我有执行npm install的代码,如下所示:

cmd := exec.Command("npm", "install")

并以

结束
if err = cmd.Wait(); err != nil {
    logs.("Error running %s: %v\n", cp[1:], err)
    return err
}

我想使用进度条,我发现了以下内容 https://github.com/cheggaaa/pb 但由于我不控制执行的时间(我不知道它什么时候完成),我怎么能用呢?

更新

由于我们无法计算将要花费的时间(这取决于网络等)所以我只是想表明某些东西在起作用, 显示进程正在运行,因为用户等待20秒,他认为没有任何效果,怎么办?

1 个答案:

答案 0 :(得分:1)

答案非常简短:如果您没有任何指示性单位,则不能。

稍微长一点的答案:向用户提供反馈可以通过多种方式完成。如果您没有详细的进度信息(例如:已经完成了10个步骤中的n个步骤,或者已经过了10秒),则无法真正显示有意义的进度条。

您可以向用户提供有关正在发生的事情的反馈。然而,这是npm已经做过的事情,为什么不直接显示输出呢?

如果您只关心显示进度条而不管其有多大意义,那么您可以做的是猜测该进程需要多长时间。只需将它计时一次,并将其作为参考点。