43 lines
892 B
Ruby
43 lines
892 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Gitlab
|
||
|
module Ci
|
||
|
module Components
|
||
|
##
|
||
|
# Components::Header class represents full component specification that is being prepended as first YAML document
|
||
|
# in the CI Component file.
|
||
|
#
|
||
|
class Header
|
||
|
attr_reader :errors
|
||
|
|
||
|
def initialize(header)
|
||
|
@header = header
|
||
|
@errors = []
|
||
|
end
|
||
|
|
||
|
def empty?
|
||
|
inputs_spec.to_h.empty?
|
||
|
end
|
||
|
|
||
|
def inputs(args)
|
||
|
@input ||= Ci::Input::Inputs.new(inputs_spec, args)
|
||
|
end
|
||
|
|
||
|
def context(args)
|
||
|
inputs(args).then do |input|
|
||
|
raise ArgumentError unless input.valid?
|
||
|
|
||
|
Ci::Interpolation::Context.new({ inputs: input.to_hash })
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def inputs_spec
|
||
|
@header.dig(:spec, :inputs)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|