摇动:命令失败后自动删除文件

时间:2019-09-09 12:43:14

标签: shake-build-system

我使用Shake创建mp3(这只是一个学习示例),我使用了la脚,然后使用id3v2对其进行了标记。

如果the脚成功,但id3v2失败了,那么我就剩下mp3文件了;但当然是“错误的”。我一直在寻找一个选项,如果产生命令错误,该选项会自动删除目标文件,但我什么也找不到。我可以通过检查退出代码并使用removeFiles来手动完成此操作,也可以在临时目录中进行构建并作为最后一步;但这似乎是一个足够普通的要求(make does this by default),所以我想知道是否有我只是看不到的功能或简单技术。

1 个答案:

答案 0 :(得分:0)

Make缺省执行此操作的原因是,如果Make在磁盘上有部分不完整的文件,它将认为任务已成功运行并且是最新的,这会破坏所有内容。相反,Shake在单独的文件(.shake.database)中记录了任务已成功运行,因此它知道您的mp3文件不完整,并将在下次重新构建。

尽管Shake不需要删除文件,但您可能还是希望这样做,以避免混淆用户。您可以使用actionOnException来做到这一点,例如:

let generateMp3 = do cmd "lame" ... ; cmd "id3v2" ...
let deleteMp3 = removeFile "foo.mp3"
actionOnException generateMp3 deleteMp3