- Handle race condition creating folders, makes parallel more reliable
- Fix #12 where tasks didn't keep their stale status after dependencies ran first
- Auto mode works for watched directories
- Add support for tasks depending on directories
- New
fast_dirs
mode in TaskManager for cheaper directory checks - Add progress callback
- Add support for passing blocks to Tasks:
Croupier::Task.new output: "fileA", inputs: ["input.txt"] do
puts "task1 running"
File.read("input.txt").downcase
end
- New
TaskManager.auto_mode?
property - Yield on spawn to make concurrency more useful
- More efficient input handling
- Fix deadlocking bug in parallel runner
- Warn or error when tasks are next in line but not ready
- Add
mergeable
flag for tasks (default true) - Added
TaskManager.depends_on
function
- Add trace level debug about why tasks run
- Implement k/v data as input/output for tasks
- Implement persistent k/v store
- Implement
fast_mode
for TaskManager, where it checks file timestamps instead of contents to decide if they should trigger tasks. - Better logs
- Fixed bug saving .croupier, was missing all inputs
- Added tests for
TaskManager.save_run
- Fixed bug in inotify watcher path lookup
- Fixed bug where auto_run would only run tasks once
- Implemented keep-going flag
- Add support for running only some tasks in auto_run
- Implemented
TaskManager.inputs
to get the inputs for a given list of targets. - Implemented
TaskManager.stop_watch
and watcher cleanup - Uncommented skipping run if queued changes are empty in
auto_run
- Added support for calling
watch
only for the dependencies of specific targets - Simpler one-watcher implementation of watch
- Only react to specific Inotify flags in watch
- Added auto_run / auto_stop that control a "watchdog" fiber that automatically runs tasks if their dependencies change.
- Removed name parameter
- Made autogenerated
Task.@id
shorter - Implemented more complex task merging strategy (see "complex merge" in the spec)
- Made
TaskManager.all_inputs
more efficient - Call
TaskManager.sorted_tas_graph
less and made it faster - Make @id generation simpler
- Tasks without inputs should be treated like always_run tasks (found via bug in Hacé)
- Tasks without inputs and multiple outputs should not run twice (found via bug in Hacé)
- Made TaskManager an instance of a struct, and lost all the class variables, simplifying code.
- Removed some small methods from TaskManager.
- Fix bug that triggered too many builds in some cases in nicolino
- Bring the parallel runner up to date with the serial one, including equivalent tests
- Tasks are mostly YAML serializable (procs can't be serialized)
- Task class uses properties instead of instance variables
- TaskManager is now a struct
- Renamed argument
output
tooutputs
inTask.initialize
where it makes sense. - Fixed bug merging tasks with multiple outputs
- Fixed bug merging tasks with different flags
- Added missing always_run flag to overloaded
Task.initialize
- Added
always_run
flag for tasks that run even if their dependencies are unchanged. - Added
dry_run
flag for run_tasks, which will not actually run the procs.
- Improve handling of tasks without outputs. They now have an ID they can be referred by.
- Improved handling of Proc return types.
- Support tasks that generate multiple outputs
- Support tasks that generate no output
- Forbid merging tasks with different
no_save
settings - Minor change in semantics of tasks with the same output
- Support multiple tasks with same output, which will be executed in creation order.
- Fail to run if any tasks depend on inputs that don't exist and are not outputs.
This is what it is, no records :-)