diff options
Diffstat (limited to 'lib/gitlab/ci/components/header.rb')
-rw-r--r-- | lib/gitlab/ci/components/header.rb | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/gitlab/ci/components/header.rb b/lib/gitlab/ci/components/header.rb new file mode 100644 index 00000000000..732874d7a88 --- /dev/null +++ b/lib/gitlab/ci/components/header.rb @@ -0,0 +1,42 @@ +# 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 |