class GithubFlowCli::IssueCommands

Public Instance Methods

all() click to toggle source
# File lib/commands/issue.rb, line 14
def all
  list_issues(assignee: '*', show_assignee: true)
  list_issues(assignee: 'none', show_assignee: true)
end
create(title) click to toggle source
# File lib/commands/issue.rb, line 9
def create(title)
  puts API.create_issue(title).html_url
end
mine() click to toggle source
# File lib/commands/issue.rb, line 20
def mine
  list_issues(assignee: Config.username)
end
start(number) click to toggle source
# File lib/commands/issue.rb, line 30
def start(number)
  # TODO: before filer
  unless Local.repo
    puts "not valid outside of a github repo."
    exit(4)
  end
  issue = API.issue(Local.repo, number)
  # TODO: create branch based on RepoRules
  # TODO: abstarct tag from issue title
  branch_name = "i_#{number}_#{issue.title.gsub(/[^_\w\d ]/, '').snakecase}"
  Local.git.branch(branch_name).checkout
  Config.link_branch_to_issue(branch_name, issue)
rescue Octokit::NotFound
  puts "issue not found!"
end
unassigned() click to toggle source
# File lib/commands/issue.rb, line 25
def unassigned
  list_issues(assignee: 'none')
end

Private Instance Methods

assignee_field(show_assignee, issue) click to toggle source
# File lib/commands/issue.rb, line 58
def assignee_field(show_assignee, issue)
  show_assignee ? " (#{issue.assignee&.login || 'NONE'})" : ''
end
list_issues(config) click to toggle source
# File lib/commands/issue.rb, line 48
def list_issues(config)
  show_assignee = config.delete(:show_assignee)
  issues = API.list_issues(Local.repo, config)
  unless issues.empty?
    msgs = issues.sort_by(&:title).map { |i| "#{Local.repo ? '' : i.repository.name}##{i.number}#{assignee_field(show_assignee, i)}: #{i.title}" }
    msgs.sort_by!(&:itself) unless Local.repo
    puts msgs
  end
end