我想用摇动下载一堆网页,然后对它们做一些处理。不过,我还想选择下载页面以外的页面,告诉我已经这样做了,然后让其他处理步骤继续进行。现在我正在做第二步,“告诉我为它做了一些工作”。如何跳过摇动操作?
举一个小例子,这里有一个很短的抖动脚本:
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
而不运行与test.txt
相关的Action
? --touch
做什么,为什么没有帮助?-o
/-W
做什么,为什么他们没有帮助?- 旧/新和干净/脏之间的关系是什么?
另外:我试过寻找[精细手册](http://shakebuild.com/manual#running),但它的命令行标志部分确实很短;它根本没有提到任何这些标志。这是一个教程而不是参考手册。 –
我知道这似乎是一种不合理的做法,但您可能想[使用源代码Luke](https://github.com/ndmitchell/shake)。我认为你的问题是一个很好的问题,但很可能是阅读资料来源是获得答案的最快方法。 – dfeuer
@dfeuer我不认为这是不合理的!我还没有精力去做(还),并且认为我会给一个已经知道答案的人一个机会在我充电时说。 –