Sha256: 32b6a03ce925a67e22ce61c2692417813a09015673aacc8aeef365b3dd3153c6

Contents?: true

Size: 718 Bytes

Versions: 4

Compression:

Stored size: 718 Bytes

Contents

require 'open3'

require 'TerraformDevKit/errors/command_error'

module TerraformDevKit
  class Command
    def self.run(cmd, directory: Dir.pwd, print_output: true)
      out = IO.popen(cmd, err: %i[child out], chdir: directory) do |io|
        begin
          out = ''
          loop do
            chunk = io.readpartial(4096)
            print chunk if print_output
            out += chunk
          end
        rescue EOFError; end
        out
      end

      out = process_output(out)
      $?.exitstatus.zero? || (raise CommandError.new(cmd, out))
      out
    end

    private_class_method
    def self.process_output(out)
      out.split("\n")
        .map { |line| line.tr("\r\n", '') }
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
TerraformDevKit-0.4.0 lib/TerraformDevKit/command.rb
TerraformDevKit-0.3.7 lib/TerraformDevKit/command.rb
TerraformDevKit-0.3.6 lib/TerraformDevKit/command.rb
TerraformDevKit-0.3.5 lib/TerraformDevKit/command.rb