Sha256: cbb47c808794d5485887699208769fec7b871756592c7a409e0712cd75f8c4db

Contents?: true

Size: 1.27 KB

Versions: 4

Compression:

Stored size: 1.27 KB

Contents

module Perkins
  module Build
    class Data
      class Var
        PATTERN = /(?:SECURE )?([\w]+)=(("|')(.*?)(\3)|\$\(.*?\)|[^"' ]+)/

        class << self
          def create(*args)
            if args.size == 1
              parse(args.first).map { |key, value| Var.new(key, value) }
            else
              [Var.new(*args)]
            end
          end

          def parse(line)
            secure = line =~ /^SECURE /
            line.scan(PATTERN).map { |match| [(secure ? "SECURE #{match[0]}" : match[0]), match[1]] }
          end
        end

        attr_reader :value

        def initialize(key, value, secure = nil)
          @key = key.to_s
          @value = value.to_s
          @secure = secure
        end

        def key
          strip_secure(@key)
        end

        def to_s
          if travis?
            false
          elsif secure?
            "export #{[key, '[secure]'].join('=')}"
          else
            "export #{[key, value].join('=')}"
          end
        end

        def travis?
          @key =~ /^TRAVIS_/
        end

        def secure?
          @secure.nil? ? @key =~ /^SECURE / : @secure
        end

        private

          def strip_secure(string)
            string.gsub('SECURE ', '')
          end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
perkins-0.0.5 lib/perkins/build/data/var.rb
perkins-0.0.3 lib/perkins/build/data/var.rb
perkins-0.0.2 lib/perkins/build/data/var.rb
perkins-0.0.1 lib/perkins/build/data/var.rb