class Drone::Builds::Parser

Constants

MESSAGE_MAX_WIDTH
STATUS_COLORS

Attributes

client[R]

Public Class Methods

new(client) click to toggle source
# File lib/drone/builds/parser.rb, line 17
def initialize(client)
  @client = client
end

Public Instance Methods

parse_author(author) click to toggle source
# File lib/drone/builds/parser.rb, line 43
def parse_author(author)
  current_github_user = HOME_ENV[:GITHUB_USER]
  if author == current_github_user
    author.colorize(:light_white)
  else
    author
  end
end
parse_build(build) click to toggle source
# File lib/drone/builds/parser.rb, line 25
def parse_build(build)
  {
    number: parse_number(build['number']),
    status: parse_status(build['status']),
    author: parse_author(build['author']),
    ref: parse_ref(build['ref']),
    message: parse_message(build['message'])
  }
end
parse_builds(builds) click to toggle source
# File lib/drone/builds/parser.rb, line 21
def parse_builds(builds)
  builds.map { |build| parse_build(build) }
end
parse_message(message) click to toggle source
# File lib/drone/builds/parser.rb, line 56
def parse_message(message)
  message = message.to_s.lines.first.to_s
  message = message.gsub("of github.com:#{client.owner}/#{client.name}", '')
  message[0..MESSAGE_MAX_WIDTH]
end
parse_number(number) click to toggle source
# File lib/drone/builds/parser.rb, line 35
def parse_number(number)
  number.to_s
end
parse_ref(ref) click to toggle source
# File lib/drone/builds/parser.rb, line 52
def parse_ref(ref)
  ref.gsub('refs/heads/', '').gsub('/head', '').gsub('refs/pull/', '#')
end
parse_status(status) click to toggle source
# File lib/drone/builds/parser.rb, line 39
def parse_status(status)
  status.colorize(STATUS_COLORS[status.to_sym])
end
table(data, fields) click to toggle source
# File lib/drone/builds/parser.rb, line 62
def table(data, fields)
  Terminal::Table.new(rows: [fields, :separator] + data.map(&:values))
end