Class: Browserctl::WorkflowDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/browserctl/workflow.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ WorkflowDefinition

Returns a new instance of WorkflowDefinition.



467
468
469
470
471
472
# File 'lib/browserctl/workflow.rb', line 467

def initialize(name)
  @name = name
  @description = nil
  @param_defs  = {}
  @steps       = []
end

Instance Attribute Details

#descriptionObject (readonly)

Returns the value of attribute description.



465
466
467
# File 'lib/browserctl/workflow.rb', line 465

def description
  @description
end

#nameObject (readonly)

Returns the value of attribute name.



465
466
467
# File 'lib/browserctl/workflow.rb', line 465

def name
  @name
end

#param_defsObject (readonly)

Returns the value of attribute param_defs.



465
466
467
# File 'lib/browserctl/workflow.rb', line 465

def param_defs
  @param_defs
end

#stepsObject (readonly)

Returns the value of attribute steps.



465
466
467
# File 'lib/browserctl/workflow.rb', line 465

def steps
  @steps
end

Instance Method Details

#call(params, client, replay_context: nil) ⇒ Object



495
496
497
498
# File 'lib/browserctl/workflow.rb', line 495

def call(params, client, replay_context: nil)
  ctx = WorkflowContext.new(resolve_params(params), client, replay_context: replay_context)
  execute_steps(ctx)
end

#compose(workflow_name) ⇒ Object

Raises:



488
489
490
491
492
493
# File 'lib/browserctl/workflow.rb', line 488

def compose(workflow_name)
  source = Browserctl.lookup_workflow(workflow_name.to_s)
  raise WorkflowError, "workflow '#{workflow_name}' not found for composition" unless source

  @steps.concat(source.steps)
end

#desc(text) ⇒ Object



474
475
476
# File 'lib/browserctl/workflow.rb', line 474

def desc(text)
  @description = text
end

#param(name, required: false, secret: false, default: nil, secret_ref: nil) ⇒ Object



478
479
480
481
482
# File 'lib/browserctl/workflow.rb', line 478

def param(name, required: false, secret: false, default: nil, secret_ref: nil)
  secret = true if secret_ref
  @param_defs[name] =
    ParamDef.new(name: name, required: required, secret: secret, default: default, secret_ref: secret_ref)
end

#step(label, retry_count: 0, timeout: nil, &block) ⇒ Object



484
485
486
# File 'lib/browserctl/workflow.rb', line 484

def step(label, retry_count: 0, timeout: nil, &block)
  @steps << StepDef.new(label: label, block: block, retry_count: retry_count, timeout: timeout)
end