The problem with pretty much all build/deploy tools is that they are "just one". There are different tasks, and they _should_ be split.
* Monitoring a filesystem for changes.
* Traversing a dependency graph, and computing the minimal set of tasks from there
* Execute arbitrary user actions for each task. (For bonus points, allow a feedback channel from actions to DAG)
* For extra bonus points, monitor your actions on the OS level to update the DAG automatically. It's neat gcc can create a list of includes. It'd be much neater if I automatically could get a list of dependencies for any tool I run.
Making them into one monolithic tool means inevitably there are some cases the tool is less-than-useful.
The problem with pretty much all build/deploy tools is that they are "just one". There are different tasks, and they _should_ be split.
* Monitoring a filesystem for changes. * Traversing a dependency graph, and computing the minimal set of tasks from there * Execute arbitrary user actions for each task. (For bonus points, allow a feedback channel from actions to DAG) * For extra bonus points, monitor your actions on the OS level to update the DAG automatically. It's neat gcc can create a list of includes. It'd be much neater if I automatically could get a list of dependencies for any tool I run.
Making them into one monolithic tool means inevitably there are some cases the tool is less-than-useful.