Sha256: 68034cdcb346996cde1a95dbfd47d3dd6490c4ca440ee8dfd3f5dceee1151600

Contents?: true

Size: 1.18 KB

Versions: 41

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

require 'active_support/core_ext/hash/indifferent_access'
require 'active_support/core_ext/object/blank'
require 'shellwords'

module EacRubyUtils
  module Envs
    class Command
      module ExtraOptions
        def chdir(dir)
          duplicate_by_extra_options(chdir: dir)
        end

        def envvar(name, value)
          duplicate_by_extra_options(envvars: envvars.merge(name => value))
        end

        def pipe(other_command)
          duplicate_by_extra_options(pipe: other_command)
        end

        private

        attr_reader :extra_options

        def envvars
          extra_options[:envvars] ||= {}.with_indifferent_access
        end

        def append_envvars(command)
          e = envvars.map { |k, v| "#{Shellwords.escape(k)}=#{Shellwords.escape(v)}" }.join(' ')
          e.present? ? "#{e} #{command}" : command
        end

        def append_pipe(command)
          extra_options[:pipe].present? ? "#{command} | #{extra_options[:pipe].command}" : command
        end

        def append_chdir(command)
          extra_options[:chdir].present? ? "(cd '#{extra_options[:chdir]}' ; #{command} )" : command
        end
      end
    end
  end
end

Version data entries

41 entries across 41 versions & 3 rubygems

Version Path
avm-tools-0.53.0 vendor/gems/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.37.0 lib/eac_ruby_utils/envs/command/extra_options.rb
avm-tools-0.52.0 vendor/gems/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
avm-tools-0.51.0 vendor/gems/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.36.1 lib/eac_ruby_utils/envs/command/extra_options.rb
ehbrs-tools-0.12.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
ehbrs-tools-0.11.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.36.0 lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.35.0 lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.34.0 lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.33.1 lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.33.0 lib/eac_ruby_utils/envs/command/extra_options.rb
ehbrs-tools-0.10.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.32.1 lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.32.0 lib/eac_ruby_utils/envs/command/extra_options.rb
ehbrs-tools-0.9.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.31.0 lib/eac_ruby_utils/envs/command/extra_options.rb
ehbrs-tools-0.7.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.30.0 lib/eac_ruby_utils/envs/command/extra_options.rb
ehbrs-tools-0.6.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb