Sha256: b8b1ebaa584e3ec9a3b0aea46dac87b012b3a37956a1cc41221b7ace9f03bb0a

Contents?: true

Size: 1.45 KB

Versions: 72

Compression:

Stored size: 1.45 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 status_result(status_code, result)
          duplicate_by_extra_options(status_results: status_results.merge(status_code => result))
        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 status_results
          extra_options[:status_results] ||= {}.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

72 entries across 72 versions & 3 rubygems

Version Path
avm-tools-0.79.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
avm-tools-0.78.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
ehbrs-tools-0.16.2 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.54.0 lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.53.0 lib/eac_ruby_utils/envs/command/extra_options.rb
avm-tools-0.77.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.52.0 lib/eac_ruby_utils/envs/command/extra_options.rb
ehbrs-tools-0.16.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.51.1 lib/eac_ruby_utils/envs/command/extra_options.rb
avm-tools-0.76.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.51.0 lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.50.0 lib/eac_ruby_utils/envs/command/extra_options.rb
ehbrs-tools-0.16.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
avm-tools-0.76.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.49.1 lib/eac_ruby_utils/envs/command/extra_options.rb
avm-tools-0.75.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
avm-tools-0.75.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
avm-tools-0.74.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb
eac_ruby_utils-0.49.0 lib/eac_ruby_utils/envs/command/extra_options.rb
avm-tools-0.74.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb