Sha256: cd8e09078d042c8c16bcfe53b4d5771b46146f95ab893027cfe8a645d8fa44c9
Contents?: true
Size: 1.46 KB
Versions: 11
Compression:
Stored size: 1.46 KB
Contents
module Buildkite module Builder class StepCollection STEP_TYPES = { block: Pipelines::Steps::Block, command: Pipelines::Steps::Command, group: Pipelines::Steps::Group, input: Pipelines::Steps::Input, trigger: Pipelines::Steps::Trigger, wait: Pipelines::Steps::Wait }.freeze attr_reader :steps def initialize @steps = [] end def each(*types, &block) types = types.flatten types.map! { |type| STEP_TYPES.values.include?(type) ? type : STEP_TYPES.fetch(type) } types = STEP_TYPES.values if types.empty? matched_steps = steps.each_with_object([]) do |step, matches| if types.any? { |step_type| step.is_a?(step_type) } matches << step end if step.is_a?(Pipelines::Steps::Group) step.steps.each(types) { |step| matches << step } end end matched_steps.each(&block) end def find(key) steps.find { |step| step.has?(:key) && step.key.to_s == key.to_s } end def remove(step) steps.delete(step) end def replace(old_step, new_step) steps[steps.index(old_step)] = new_step end def find!(key) find(key) || raise(ArgumentError, "Can't find step with key: #{key}") end def push(step) @steps.push(step) end def to_definition @steps.map(&:to_h) end end end end
Version data entries
11 entries across 11 versions & 1 rubygems