Sha256: 82574bcab4483add902156e60844debc5837d3009a1fee0306981189b5eef2e2
Contents?: true
Size: 1.63 KB
Versions: 1
Compression:
Stored size: 1.63 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, traverse_groups: true, &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) && traverse_groups 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 def empty? @steps.empty? || (@steps.all? { |step| step.is_a?(Pipelines::Steps::Group) && step.steps.empty? }) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
buildkite-builder-4.11.0 | lib/buildkite/builder/step_collection.rb |