Я собираюсь предположить, что мы хотим запустить docker image
и измениться, когда image
изменится (обобщить его для любого имени не сложно, но отвлекает от важных битов).
Представьте себеСервис всегда работает, никогда не падает и полностью контролируется Shake.Мы могли бы написать:
"runner" %> \out -> do
need ["image"]
cmd_ "docker kill"
cmd_ "docker start image"
writeFile' out ""
Здесь у нас есть правило, которое выдает runner
, а побочный эффект зависит от image
и запускается / останавливается docker
.Любой тест с использованием бегуна должен выполнить need ["runner"]
до его начала.Если они также зависят от содержимого изображения, они должны сделать need ["runner","image"]
.
Если изображения не находятся под контролем Shake, и другие люди подталкивают их, вы, вероятно, захотите addOracle
определить оракула, который обнаруживает запущенные в данный момент образы докера, и зависит от него в runner
.