class Croupier::TaskManagerType
- Croupier::TaskManagerType
- Reference
- Object
Overview
TaskManager is a singleton that keeps track of all tasks
Defined in:
croupier.crInstance Method Summary
-
#_dependencies(outputs : Array(String))
Helper function for dependencies
-
#_run_tasks(outputs, run_all : Bool = false, dry_run : Bool = false, keep_going : Bool = false)
Internal helper to run tasks serially
-
#_run_tasks_parallel(targets : Array(String) = [] of String, run_all : Bool = false, dry_run : Bool = false, keep_going : Bool = false)
Internal helper to run tasks concurrently
- #all_inputs
-
#auto_mode=(auto_mode : Bool)
If true, it's running in auto mode
-
#auto_mode? : Bool
If true, it's running in auto mode
- #auto_run(targets : Array(String) = [] of String)
- #auto_stop
-
#check_dependencies
Check if all inputs are correct: They should all be either task outputs or existing files
-
#cleanup
Remove all tasks and everything else (good for tests)
-
#dependencies(outputs : Array(String))
Get a task list of what tasks need to be done to produce
outputs
The list is sorted so it can be executed in order -
#dependencies(output : String)
Get a task list of what tasks need to be done to produce
output
The list is sorted so it can be executed in order Overloaded to accept a single string for convenience - #depends_on(input : String)
- #depends_on(inputs : Array(String))
-
#fast_dirs=(fast_dirs : Bool)
If true, directories depend on a list of files, not its contents
-
#fast_dirs? : Bool
If true, directories depend on a list of files, not its contents
-
#fast_mode=(fast_mode : Bool)
If true, only compare file dates
-
#fast_mode? : Bool
If true, only compare file dates
- #get(key)
-
#inputs(targets : Array(String))
The set of all inputs for the given tasks
-
#last_run : Hash(String, String)
SHA1 of files from last run
-
#last_run=(last_run : Hash(String, String))
SHA1 of files from last run
-
#mark_stale_inputs
Read state of last run, then scan inputs and compare
-
#modified : Set(String)
Registry of modified files, which will make tasks stale
-
#modified=(modified : Set(String))
Registry of modified files, which will make tasks stale
-
#next_run : Hash(String, String)
SAH1 of input files as of ending this run
-
#next_run=(next_run : Hash(String, String))
SAH1 of input files as of ending this run
-
#progress_callback : Proc(String, Nil)
If set, it's called after every task finishes
-
#progress_callback=(progress_callback : Proc(String, Nil))
If set, it's called after every task finishes
-
#run_tasks(run_all : Bool = false, dry_run : Bool = false, parallel : Bool = false, keep_going : Bool = false)
Run all stale tasks in dependency order
-
#run_tasks(targets : Array(String), run_all : Bool = false, dry_run : Bool = false, parallel : Bool = false, keep_going : Bool = false)
Run the tasks needed to create or update the requested targets
-
#save_run
We ran all tasks, store the current state
-
#scan_inputs
Scan all inputs and return a hash with their sha1
- #set(key, value)
- #sorted_task_graph
-
#tasks : Hash(String, Croupier::Task)
Registry of all tasks
-
#tasks=(tasks : Hash(String, Croupier::Task))
Registry of all tasks
-
#this_run : Hash(String, String)
SHA1 of files as of starting this run
-
#this_run=(this_run : Hash(String, String))
SHA1 of files as of starting this run
-
#use_persistent_store(path : String)
Use a persistent k/v store in this path instead of the default memory store
-
#watch(targets : Array(String) = [] of String)
Watch for changes in inputs.
Instance Method Detail
Internal helper to run tasks serially
Internal helper to run tasks concurrently
Whenever a task is ready, launch it in a separate fiber This is only concurrency, not parallelism, but on tests it seems to be faster than running tasks sequentially.
Check if all inputs are correct: They should all be either task outputs or existing files
Get a task list of what tasks need to be done to produce outputs
The list is sorted so it can be executed in order
Get a task list of what tasks need to be done to produce output
The list is sorted so it can be executed in order
Overloaded to accept a single string for convenience
If set, it's called after every task finishes
Run all stale tasks in dependency order
If run_all
is true, run non-stale tasks too
If dry_run
is true, only log what would be done, but don't do it
If parallel
is true, run tasks in parallel
If keep_going
is true, keep going even if a task fails
Run the tasks needed to create or update the requested targets
If run_all
is true, run non-stale tasks too
If dry_run
is true, only log what would be done, but don't do it
If parallel
is true, run tasks in parallel
If keep_going
is true, keep going even if a task fails
Use a persistent k/v store in this path instead of the default memory store
Watch for changes in inputs. If an input has been changed BEFORE calling this method, it will NOT be detected as a change.
Changes are added to queued_changes