Sha256: c10a18341e60df5102adf33d75350dd809dce1231f551171c94fd88ef62e9b61

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

module Reviewer
  class Command
    class String
      # Assembles tool environment variables into a single string or array
      class Env
        attr_reader :env_pairs

        # Creates an instance of env variables for a tool to help generate the command string
        # @param env_pairs [Hash] [description]
        #
        # @return [self]
        def initialize(env_pairs)
          @env_pairs = env_pairs
        end

        def to_s
          to_a.compact.join(' ')
        end

        def to_a
          env = []
          env_pairs.each { |key, value| env << env(key, value) }
          env
        end

        private

        def env(key, value)
          return nil if key.to_s.strip.empty? || value.to_s.strip.empty?

          value = needs_quotes?(value) ? "'#{value}'" : value

          "#{key.to_s.strip.upcase}=#{value.to_s.strip}"
        end

        def needs_quotes?(value)
          value.is_a?(::String) && value.include?(' ')
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reviewer-0.1.5 lib/reviewer/command/string/env.rb