Sha256: 5e616d2211ad83d9c2b9a211443b6cd1dbb2e7838ece8230450d1ac7f526df21

Contents?: true

Size: 949 Bytes

Versions: 57

Compression:

Stored size: 949 Bytes

Contents

require 'open3'

module Gitlab
  module QA
    module Docker
      class Shellout
        StatusError = Class.new(StandardError)

        def initialize(command)
          @command = command
          @output = []

          puts "Docker shell command: `#{@command.mask_secrets}`"
        end

        def execute!
          raise StatusError, 'Command already executed' if @output.any?

          Open3.popen2e(@command.to_s) do |_in, out, wait|
            out.each do |line|
              @output.push(line)

              if block_given?
                yield line, wait
              else
                puts line
              end
            end

            if wait.value.exited? && wait.value.exitstatus.nonzero? # rubocop:disable Style/IfUnlessModifier
              raise StatusError, "Docker command `#{@command.mask_secrets}` failed!"
            end
          end

          @output.join.chomp
        end
      end
    end
  end
end

Version data entries

57 entries across 57 versions & 1 rubygems

Version Path
gitlab-qa-7.9.0 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.8.5 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.8.4 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.8.3 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.8.2 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.8.1 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.8.0 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.7.3 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.7.2 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.7.1 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.7.0 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.6.0 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.5.0 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.4.0 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.3.1 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.3.0 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.2.1 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.2.0 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.1.1 lib/gitlab/qa/docker/shellout.rb
gitlab-qa-7.1.0 lib/gitlab/qa/docker/shellout.rb