Sha256: 3fb6bdb1493f287bfaf7bb1152acf0da8ffeac8f1183eb1e89557cea84cc59f8
Contents?: true
Size: 1.09 KB
Versions: 23
Compression:
Stored size: 1.09 KB
Contents
require 'open3' require 'rainbow/refinement' module Gitlab module QA module Docker class Shellout using Rainbow StatusError = Class.new(StandardError) def initialize(command) @command = command @output = [] Rainbow.enabled = Runtime::Env.colorized_logs? Runtime::Logger.info("Docker shell command: `#{@command.mask_secrets}`".cyan) end def execute! # rubocop:disable Metrics/AbcSize 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
23 entries across 23 versions & 1 rubygems