Sha256: cb4c3880e4a1cd92ae584acf122239815b8054b63f1aaa291c15423184242ba6

Contents?: true

Size: 1.68 KB

Versions: 55

Compression:

Stored size: 1.68 KB

Contents

module R10K
  module Environment
    # Handle environment name validation and modification.
    #
    # @api private
    class Name

      # @!attribute [r] name
      #   @return [String] The unmodified name of the environment
      attr_reader :name

      INVALID_CHARACTERS = %r[\W]

      def initialize(name, opts)
        @name   = name
        @opts   = opts

        @source  = opts[:source]
        @prefix  = opts[:prefix]
        @invalid = opts[:invalid]

        case @invalid
        when 'correct_and_warn'
          @validate = true
          @correct  = true
        when 'correct'
          @validate = false
          @correct  = true
        when 'error'
          @validate = true
          @correct  = false
        when NilClass
          @validate = opts[:validate]
          @correct = opts[:correct]
        end
      end

      # Should the environment name have invalid characters removed?
      def correct?
        @correct
      end

      def validate?
        @validate
      end

      def valid?
        if @validate
          ! @name.match(INVALID_CHARACTERS)
        else
          true
        end
      end

      # The directory name for the environment, modified as necessary to remove
      # invalid characters.
      #
      # @return [String]
      def dirname
        dir = @name.dup

        prefix = derive_prefix(@source,@prefix)

        if @correct
          dir.gsub!(INVALID_CHARACTERS, '_')
        end

        "#{prefix}#{dir}"
      end


      private

      def derive_prefix(source,prefix)

        if prefix == true
          "#{source}_"
        elsif prefix.is_a? String
          "#{prefix}_"
        else
          nil
        end
      end
    end
  end
end

Version data entries

55 entries across 55 versions & 1 rubygems

Version Path
r10k-3.8.0 lib/r10k/environment/name.rb
r10k-3.7.0 lib/r10k/environment/name.rb
r10k-3.6.0 lib/r10k/environment/name.rb
r10k-2.6.9 lib/r10k/environment/name.rb
r10k-3.5.2 lib/r10k/environment/name.rb
r10k-3.5.1 lib/r10k/environment/name.rb
r10k-3.5.0 lib/r10k/environment/name.rb
r10k-3.4.1 lib/r10k/environment/name.rb
r10k-2.6.8 lib/r10k/environment/name.rb
r10k-3.4.0 lib/r10k/environment/name.rb
r10k-3.3.3 lib/r10k/environment/name.rb
r10k-3.2.3 lib/r10k/environment/name.rb
r10k-2.6.7 lib/r10k/environment/name.rb
r10k-3.3.2 lib/r10k/environment/name.rb
r10k-3.3.1 lib/r10k/environment/name.rb
r10k-3.2.1 lib/r10k/environment/name.rb
r10k-3.0.4 lib/r10k/environment/name.rb
r10k-2.6.6 lib/r10k/environment/name.rb
r10k-3.3.0 lib/r10k/environment/name.rb
r10k-3.2.0 lib/r10k/environment/name.rb