class Worktree::TabCompletion::BranchCompletion

Constants

JIRA_ISSUE_ID_REGEX
JIRA_ISSUE_ID_REGEX_TEMPLATE

Public Class Methods

new(compl) click to toggle source
# File lib/worktree/tab_completion/branch_completion.rb, line 11
def initialize(compl)
  @compl = compl
end

Public Instance Methods

list() click to toggle source
# File lib/worktree/tab_completion/branch_completion.rb, line 15
def list
  issue_id = find_jira_issue_by(@compl)
  if issue_id
    jira_issue = jira_client.Issue.find(issue_id)
    ["#{issue_id}-#{clean_jira_summary(jira_issue)}"]
  else
    []
  end
end

Private Instance Methods

clean_jira_summary(jira_issue) click to toggle source
# File lib/worktree/tab_completion/branch_completion.rb, line 41
def clean_jira_summary(jira_issue)
  raw_summary = jira_issue.summary
  raw_summary = raw_summary.strip

  # translate raw summary to branch name
  summary = raw_summary.split(' ').map(&:underscore).join('-')
  summary.gsub!('&&', 'and')
  summary.gsub!(/\(|\)/, '') # remove brackets
  summary.gsub!(/"|'|”|“|«|»/, '') # remove quotes
  summary.gsub!(/\.$/, '') # remove end period
  summary.gsub!(%r{/}, '-') # change back slash to minus
  summary.gsub!(/:|;/, '')
  summary
end
find_jira_issue_by(comp_line) click to toggle source
# File lib/worktree/tab_completion/branch_completion.rb, line 27
def find_jira_issue_by(comp_line)
  (comp_line.match(JIRA_ISSUE_ID_REGEX) || [])[0]
end
jira_client() click to toggle source
# File lib/worktree/tab_completion/branch_completion.rb, line 31
def jira_client
  @jira_client ||= JIRA::Client.new(
    username: ENV['JIRA_USERNAME'],
    password: ENV['JIRA_PASSWORD'],
    site: ENV['JIRA_SITE'],
    context_path: '',
    auth_type: :basic
  )
end