我试图弄清楚如何在执行命令之前从 Progress 类型(在 Development.Shake.Progress 中)获取进度信息以输出它。可能的期望输出将是:
[1/9] Compiling src/Window/Window.cpp
[2/9] Compiling src/Window/GlfwError.cpp
[3/9] Compiling src/Window/GlfwContext.cpp
[4/9] Compiling src/Util/MemTrack.cpp
...
现在我正在使用一些 IORef 来模拟这个,它保持总数(最初设置为源文件的总和)和我在执行每个构建命令之前增加的计数,但这对我来说似乎是一个 hackish 解决方案。
最重要的是,该解决方案似乎在干净的构建上可以正常工作,但在部分构建上表现不佳,因为显示的总和仍然是所有源文件的总和。
通过访问 Progress 数据类型,我将能够使用它的 countSkipped、countBuild 和 countTodo 成员正确计算这个分数(参见 Progress.hs:53),但我仍然不确定如何实现这一点。
任何帮助表示赞赏。