class Drone::Builds::Cli

Command-line interface configuration

Constants

LIMIT

Private Class Methods

client() click to toggle source
# File lib/drone/builds/cli.rb, line 83
def self.client
  server = HOME_ENV[:DRONE_SERVER]
  domain = HOME_ENV[:DRONE_DOMAIN]

  abort("You can't specify both DRONE_SERVER and DRONE_DOMAIN") if server && domain

  if server
    protocol, domain = server.split("://")
  else
    protocol, domain = 'https', domain
  end

  @client ||=
    Drone::Builds.new(
      protocol: protocol,
      domain: domain,
      token: HOME_ENV[:DRONE_TOKEN],
      owner: HOME_ENV[:DRONE_OWNER],
      name: HOME_ENV[:DRONE_NAME],
      job_id: HOME_ENV[:DRONE_JOB_ID],
    )
end
options_to_ref(options) click to toggle source
# File lib/drone/builds/cli.rb, line 106
def self.options_to_ref(options)
  ref = nil
  ref = "refs/heads/#{options[:branch]}" if options[:branch]
  ref = "refs/pull/#{options[:pull]}/head" if options[:pull]
  ref
end
parser() click to toggle source
# File lib/drone/builds/cli.rb, line 79
def self.parser
  @parser ||= Drone::Builds::Parser.new(client)
end

Public Instance Methods

kill(build_number = nil) click to toggle source
# File lib/drone/builds/cli.rb, line 68
def kill(build_number = nil)
  puts self.class.client.kill(build_number)
end
list() click to toggle source
# File lib/drone/builds/cli.rb, line 22
def list
  ref = self.class.options_to_ref(options)

  builds = self.class.parser.parse_builds(self.class.client.list(
    limit: options[:limit],
    ref: ref,
    status: options[:status]
  ))

  puts self.class.parser.table(builds, %i(number status author ref message))
end
restart(build_number = nil) click to toggle source
# File lib/drone/builds/cli.rb, line 63
def restart(build_number = nil)
  puts self.class.client.restart(build_number)
end
show(build_number = nil) click to toggle source
# File lib/drone/builds/cli.rb, line 41
def show(build_number = nil)
  ref = self.class.options_to_ref(options)

  if build_number.to_i.to_s != build_number
    build_number = self.class.client.list(
      limit: options[:last]&.abs,
      ref: ref,
      status: options[:status]
    )[0]&.[]('number')
  end

  abort "No build found for options: #{options}" unless build_number

  self.class.client.show(
    build_number,
    filter: options[:filter],
    context: options[:context]) do |line|
    puts line
  end
end
version() click to toggle source
# File lib/drone/builds/cli.rb, line 73
def version
  puts Drone::Builds::VERSION
end