Sha256: 0086fe1971d1bb543f0c46a2c045953e87fd3974d035b3cc586150db2cc1992a

Contents?: true

Size: 1.5 KB

Versions: 3

Compression:

Stored size: 1.5 KB

Contents

require 'open3'

require 'fedux_org/stdlib/environment'
require 'fedux_org/stdlib/command/command_result'

module FeduxOrg
  module Stdlib
    module Command
      module RunCommand
        include Environment

        # Execute command
        #
        # @param [String] cmd
        #   the command 
        #
        # @param [Hash] options
        #   the options for command execution
        #
        # @option options [Hash] env ({])
        #   the environment variables for the command ('VAR' => 'CONTENT')
        #
        # @option options [String] stdin (nil)
        #   the string for stdin of the command
        #
        # @option options [TrueClass,FalseClass] binmode (false)
        #   should the stdin be read a binary or not
        #
        # @return [CommandResult]
        #   the result of the command execution
        #
        # @return [CommandResult]
        #   the result of the command execution
        def run_command(cmd,options={})
          opts = {
            env: nil,
            stdin: nil,
            binmode: false,
            working_directory: Dir.getwd,
          }.merge options

          env = opts[:env] || ENV.to_hash
          stdin = opts[:stdin] 
          binmode = opts[:binmode]
          working_directory = opts[:working_directory]

          result = CommandResult.new
          result.stdout, result.stderr, result.status = Open3.capture3(env, cmd, stdin_data: stdin, chdir: working_directory, binmode: binmode)

          result
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fedux_org-stdlib-0.3.2 lib/fedux_org/stdlib/command/run_command.rb
fedux_org-stdlib-0.3.0 lib/fedux_org/stdlib/command/run_command.rb
fedux_org-stdlib-0.2.1 lib/fedux_org/stdlib/command/run_command.rb