class Croupier::Task

Overview

A Task is an object that may generate output

It has a Proc which is executed when the task is run It can have zero or more inputs It has zero or more outputs Tasks are connected by dependencies, where one task's output is another's input

Included Modules

Defined in:

task.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) #

[View source]
def self.new(outputs : Array(String) = [] of String, inputs : Array(String) = [] of String, no_save : Bool = false, id : String | Nil = nil, always_run : Bool = false, mergeable : Bool = true, &block : TaskProc) #

[View source]
def self.new(outputs : Array(String) = [] of String, inputs : Array(String) = [] of String, proc : TaskProc | Nil = nil, no_save : Bool = false, id : String | Nil = nil, always_run : Bool = false, mergeable : Bool = true) #

[View source]
def self.new(output : String | Nil = nil, inputs : Array(String) = [] of String, no_save : Bool = false, id : String | Nil = nil, always_run : Bool = false, mergeable : Bool = true, &block : TaskProc) #

[View source]
def self.new(output : String | Nil = nil, inputs : Array(String) = [] of String, proc : TaskProc | Nil = nil, no_save : Bool = false, id : String | Nil = nil, always_run : Bool = false, mergeable : Bool = true) #

Create a task with zero or one outputs. Overload for convenience.


[View source]

Instance Method Detail

def always_run=(always_run : Bool) #

[View source]
def always_run? : Bool #

[View source]
def id : String #

[View source]
def id=(id : String) #

[View source]
def inputs : Set(String) #

[View source]
def inputs=(inputs : Set(String)) #

[View source]
def keys #

Under what keys should this task be registered with TaskManager


[View source]
def merge(other : Task) #

Merge two tasks.

inputs and outputs are joined procs of the second task are added to the 1st


[View source]
def mergeable=(mergeable : Bool) #

[View source]
def mergeable? : Bool #

[View source]
def no_save=(no_save : Bool) #

[View source]
def no_save? : Bool #

[View source]
def outputs : Array(String) #

[View source]
def outputs=(outputs : Array(String)) #

[View source]
def procs : Array(TaskProc) #

[View source]
def procs=(procs : Array(TaskProc)) #

[View source]
def ready?(run_all = false) #

A task is ready if it is stale and not waiting for anything


[View source]
def run #

Executes the proc for the task


[View source]
def stale : Bool #

[View source]
def stale=(stale : Bool) #

[View source]
def stale? #

ameba:disable Metrics/CyclomaticComplexity


[View source]
def to_s(io) #

[View source]
def waiting_for #

For inputs that are tasks, we check if they are stale For inputs that are not tasks, they should exist as files If any inputs don't fit those criteria, they are being waited for.


[View source]