如何在命令行上覆盖 Shake 配置

How to override Shake configuration on the command-line

我通过 usingConfigFile 维护每个项目读取的小配置文件。我希望能够覆盖命令行上的任何这些设置。似乎使用 shakeArgsWith(而不是 shakeArgs)是第一步,但我没有看到将其连接到 getConfig 产生的值的明显方法。是否有执行此操作的标准方法?

没有标准方法,但我知道几个较大的构建系统已经发明了一些东西。 shakeArgsWithreadConfigFileusingConfig 的组合应该可以做到。像(未经测试):

main = shakeArgsWith shakeOptions [] $ \_ args -> return $ Just $ do
    file <- readConfigFile "myfile.cfg"
    usingConfig $ Map.union (argsToSettings args) file
    myNormalRules

其中 argsToSettings 是一些解析您的参数并将其转换为设置的函数 - 例如在第一个 = 符号或类似符号处中断。