Sha256: a88609971c438fc207204b07a6d17c1064576c7641f9afb630e7dcbc51dd2cf4

Contents?: true

Size: 998 Bytes

Versions: 4

Compression:

Stored size: 998 Bytes

Contents

require_relative '../context'

module Gem
  module Release
    module Cmds
      class Runner < Struct.new(:name, :args, :opts, :context)
        def run
          run_cmd
          success
        end

        private

          def success
            context.ui.success "All is good, thanks my friend."
          end

          def run_cmd
            const.new(context, args, opts).run
          end

          def const
            Base[name]
          end

          def args
            super.select { |arg| arg.is_a?(String) && arg[0] != '-' }
          end

          def opts
            @opts ||= except(Base::DEFAULTS.merge(config.merge(super)), :args, :build_args)
          end

          def config
            Context.new.config.for(name.to_sym)
          end

          def context
            @context ||= super || Context.new(opts)
          end

          def except(hash, *keys)
            hash.reject { |key, _| keys.include?(key) }
          end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
gem-release-2.2.4 lib/gem/release/cmds/runner.rb
gem-release-2.2.3 lib/gem/release/cmds/runner.rb
gem-release-2.2.3.alpha4 lib/gem/release/cmds/runner.rb
gem-release-2.2.3.alpha3 lib/gem/release/cmds/runner.rb