Sha256: 6c8098ce61b5b4abdc4ba894087b1c00f69a3474e37a261be04398ca681540ce

Contents?: true

Size: 781 Bytes

Versions: 8

Compression:

Stored size: 781 Bytes

Contents

# frozen_string_literal: true

module RubyFly
  module Commands
    module Mixins
      module RequiredParams
        def configure_command(builder, opts)
          assert_required_params(opts)
          super(builder, opts)
        end

        def required_params
          %i[]
        end

        private

        def missing_params(opts)
          required_params.select { |param| opts[param].nil? }
        end

        def assert_required_params(opts)
          missing_params = missing_params(opts)
          return if missing_params.empty?

          description = missing_params.map { |p| "'#{p}'" }.join(', ')
          raise(
            ArgumentError,
            "Error: #{description} required but not provided."
          )
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
ruby_fly-0.40.0.pre.4 lib/ruby_fly/commands/mixins/required_params.rb
ruby_fly-0.40.0.pre.3 lib/ruby_fly/commands/mixins/required_params.rb
ruby_fly-0.40.0.pre.2 lib/ruby_fly/commands/mixins/required_params.rb
ruby_fly-0.40.0.pre.1 lib/ruby_fly/commands/mixins/required_params.rb
ruby_fly-0.39.0 lib/ruby_fly/commands/mixins/required_params.rb
ruby_fly-0.38.0.pre.5 lib/ruby_fly/commands/mixins/required_params.rb
ruby_fly-0.38.0.pre.4 lib/ruby_fly/commands/mixins/required_params.rb
ruby_fly-0.38.0.pre.3 lib/ruby_fly/commands/mixins/required_params.rb