Sha256: c4f9914a60298deb3157fee4897a878ddaf5e60bdb3e8e12d6213810eaf3eec0

Contents?: true

Size: 1.06 KB

Versions: 19

Compression:

Stored size: 1.06 KB

Contents

require 'gem/release/helper/hash'

module Gem
  module Release
    class Config
      class Env
        include Helper::Hash

        PREFIX = 'GEM_RELEASE_'
        TRUE   = /^(true|yes|on)$/
        FALSE  = /^(false|no|off)$/

        def load
          opts = vars.map { |key, value| to_hash(keys_for(key), cast(value)) }
          opts = opts.inject { |one, other| deep_merge(one, other) }
          opts || {}
        end

        private

          def vars
            ENV.select { |key, _| key.start_with?(PREFIX) }
          end

          def keys_for(key)
            key.sub(PREFIX, '').split('_').map(&:downcase).map(&:to_sym)
          end

          def to_hash(keys, value)
            keys = keys.reverse
            keys.inject(keys.shift => value) { |value, key| { key => value } }
          end

          def cast(value)
            case value
            when TRUE
              true
            when FALSE
              false
            when ''
              false
            else
              value
            end
          end
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
gem-release-2.2.3.alpha2 lib/gem/release/config/env.rb
gem-release-2.2.3.alpha1 lib/gem/release/config/env.rb
gem-release-2.2.2 lib/gem/release/config/env.rb
gem-release-2.2.1 lib/gem/release/config/env.rb
gem-release-2.2.0 lib/gem/release/config/env.rb
gem-release-2.1.1 lib/gem/release/config/env.rb
gem-release-2.1.0 lib/gem/release/config/env.rb
gem-release-2.0.4 lib/gem/release/config/env.rb
gem-release-2.0.3 lib/gem/release/config/env.rb
gem-release-2.0.2 lib/gem/release/config/env.rb
gem-release-2.0.1 lib/gem/release/config/env.rb
gem-release-2.0.0.rc.3 lib/gem/release/config/env.rb
gem-release-2.0.0.rc.2 lib/gem/release/config/env.rb
gem-release-2.0.0.rc.1 lib/gem/release/config/env.rb
gem-release-2.0.0.dev.5 lib/gem/release/config/env.rb
gem-release-2.0.0.dev.4 lib/gem/release/config/env.rb
gem-release-2.0.0.dev.3 lib/gem/release/config/env.rb
gem-release-2.0.0.dev.2 lib/gem/release/config/env.rb
gem-release-2.0.0.dev.1 lib/gem/release/config/env.rb