class Gl::Issues

Public Instance Methods

label(label) click to toggle source
# File lib/gl/cli/issues.rb, line 24
def label(label)
  label_action(label)
end
list(project = nil) click to toggle source
# File lib/gl/cli/issues.rb, line 7
def list(project = nil)
  if options[:i]
    id = issue_dialogue(project)
    Gl.open_in_browser("#{Gl.current_project}/issues/#{id}")
  else
    table = TTY::Table.new(%w[IID Author Title],
                           issues_list)
    puts table.render(:ascii, padding: [0, 1])
  end
end
open(id = nil) click to toggle source
# File lib/gl/cli/issues.rb, line 19
def open(id = nil)
  Gl.open_in_browser("#{Gl.current_project}/issues/#{id}")
end
unlabel(label) click to toggle source
# File lib/gl/cli/issues.rb, line 29
def unlabel(label)
  label_action(label)
end

Private Instance Methods

issue_dialogue(project = nil) click to toggle source
# File lib/gl/cli/issues.rb, line 48
def issue_dialogue(project = nil)
  prompt = TTY::Prompt.new(interrupt: :exit)
  prompt.select('Open a issue', filter: true) do |menu|
    issues_list(project).each do |issue|
      menu.choice issue.join(' - '), issue[0]
    end
  end
end
issues_list(project) click to toggle source
# File lib/gl/cli/issues.rb, line 57
def issues_list(project)
  @issues_list ||= begin
    issues = Gitlab.issues(Gl.current_project(project), state: :opened).auto_paginate

    issues.map do |issue|
      [issue.iid, issue.author.name, issue.title]
    end
  end
end
label_action(label) click to toggle source
# File lib/gl/cli/issues.rb, line 35
def label_action(label)
  id = issue_dialogue
  action = caller_locations(1, 1)[0].label

  begin
    Gitlab.create_issue_note(Gl.current_project,
                             id,
                             "/#{action} ~\"#{label}\"")
  rescue Gitlab::Error::BadRequest
    true
  end
end