我想用shake下载一堆网页,然后对它们做一些处理。但是,我还希望选择在shake 之外下载页面,告诉shake 我已经完成了,然后让shake 继续进行其余的处理步骤。现在我正在做第二步,“告诉震动我已经为它做了一些工作”。
举个简单的例子,这里有一个很短的摇动脚本:
import Development.Shake
main = shakeArgs shakeOptions $ do
want ["test.txt"]
"test.txt" %> \_ -> liftIO (putStrLn "yikes!")
我想找到一种方法来阻止这个脚本打印yikes!
(但仍然更新数据库条目test.txt
)。运行这个--help
,我看到部分:
--touch Assume targets are clean.
这听起来很有希望。然而:
% rm -r .shake && ./test --touch
yikes!
Build completed in 0:01m
也许它需要一个明确的文件列表来标记为新的?
% rm -r .shake && ./test --touch test.txt
yikes!
Build completed in 0:01m
好的。好吧,--help
还列出了这个:
-o FILE, --old-file=FILE, --assume-old=FILE
Consider FILE to be very old and don't remake it.
我觉得这有点令人费解:我们现在有一个“干净/肮脏”的隐喻和一个“旧/新”的隐喻,但不清楚它们是否相关。此外,如果文件很旧,那肯定意味着我们想要重新制作它,对吧?无论如何,它似乎没有做我想要的:
% rm -r .shake && ./test -o test.txt
yikes!
Build completed in 0:01m
好吧......好吧,也许这个选项与那个选项完全相反,会做我想要的:
-W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE
Consider FILE to be infinitely new.
没有骰子:
% r .shake && ./test -W test.txt
yikes!
Build completed in 0:01m
这给我留下了几个问题:
- 最重要的是:我怎么能要求抖动只是为了更新它的数据库条目
test.txt
而不运行Action
关联的test.txt
? - 有什么作用
--touch
,为什么没有帮助? - 做什么
-o
/-W
做什么,他们为什么不帮忙? - 旧/新和干净/脏之间的关系是什么?