Class: Buildkite::Pipelines::Command

Inherits:
Object
  • Object
show all
Defined in:
lib/buildkite/pipelines/command.rb

Defined Under Namespace

Classes: CommandFailedError, Result

Constant Summary collapse

BIN_PATH =
'buildkite-agent'
COMMANDS =
%w(
  pipeline
  artifact
  annotate
  meta_data
)

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(command, subcommand, *args) ⇒ Command

Returns a new instance of Command.



71
72
73
74
75
76
# File 'lib/buildkite/pipelines/command.rb', line 71

def initialize(command, subcommand, *args)
  @command = command.to_s
  @subcommand = subcommand.to_s
  @options = extract_options(args)
  @args = transform_args(args)
end

Class Method Details

.annotate(body, *args, exception: false) ⇒ Object



49
50
51
# File 'lib/buildkite/pipelines/command.rb', line 49

def annotate(body, *args, exception: false)
  new(:annotate, body, *args).run(exception: exception)
end

.artifact(subcommand, *args, exception: false) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/buildkite/pipelines/command.rb', line 40

def artifact(subcommand, *args, exception: false)
  result = new(:artifact, subcommand, *args).run(exception: exception)

  case subcommand.to_s
  when 'shasum', 'search' then result.output
  else result
  end
end

.meta_data(subcommand, *args, exception: false) ⇒ Object



53
54
55
56
57
58
59
60
# File 'lib/buildkite/pipelines/command.rb', line 53

def (subcommand, *args, exception: false)
  result = new(:'meta-data', subcommand, *args).run(exception: exception)

  case subcommand.to_s
  when 'get', 'keys' then result.output
  else result
  end
end

.pipeline(subcommand, *args, exception: false) ⇒ Object



36
37
38
# File 'lib/buildkite/pipelines/command.rb', line 36

def pipeline(subcommand, *args, exception: false)
  new(:pipeline, subcommand, *args).run(exception: exception)
end

Instance Method Details

#run(exception: false) ⇒ Object



78
79
80
81
82
83
84
85
86
87
# File 'lib/buildkite/pipelines/command.rb', line 78

def run(exception: false)
  stdout, stderr, status = Open3.capture3(*to_a)
  result = Result.new(stdout, stderr, status)

  if !result.success? && exception
    raise CommandFailedError, "#{result.output}"
  else
    result
  end
end