class JiraCommand::Command::Issue

Public Instance Methods

attach_epic(issue_key) click to toggle source
# File lib/jira_command/command/issue.rb, line 100
def attach_epic(issue_key)
  config = JiraCommand::Config.new.read

  baord_list = if !config[:boards].nil? && options['refresh-board'].nil?
                 config[:boards]
               else
                 agile_board = JiraCommand::Jira::Board.new(config)
                 agile_board.list
               end

  target_board = baord_list.find { |item| item[:projectKey] == issue_key.split('-').first }

  agile_epic = JiraCommand::Jira::Epic.new(config)
  epics = agile_epic.list(board_id: target_board[:id])

  prompt = TTY::Prompt.new
  epic_id = prompt.select('Which epic does the created issue belong to?') do |menu|
    epics.each do |item|
      menu.choice name: item[:name], value: item[:id]
    end
  end

  agile_epic.move_issue(epic_id: epic_id, issue_key: issue_key)
end
attach_sprint(issue_key) click to toggle source
# File lib/jira_command/command/issue.rb, line 127
def attach_sprint(issue_key)
  config = JiraCommand::Config.new.read

  baord_list = if !config[:boards].nil? && options['refresh-board'].nil?
                 config[:boards]
               else
                 agile_board = JiraCommand::Jira::Board.new(config)
                 agile_board.list
               end

  target_board = baord_list.find { |item| item[:projectKey] == issue_key.split('-').first }

  sprint_id = JiraCommand::Prompt::Base.new.select_sprint(board_id: target_board[:id])

  jira_sprint = JiraCommand::Jira::Sprint.new(config)

  jira_sprint.move_issue(issue_key: issue_key, sprint_id: sprint_id)
end
comment(issue_key) click to toggle source
# File lib/jira_command/command/issue.rb, line 91
def comment(issue_key)
  config = JiraCommand::Config.new.read
  jira_comment = JiraCommand::Jira::Issue.new(config)

  jira_comment.comment(issue_key: issue_key, message: options['message'])
end
create() click to toggle source
# File lib/jira_command/command/issue.rb, line 17
def create
  config = JiraCommand::Config.new.read

  prompt_base = JiraCommand::Prompt::Base.new

  issue_type = prompt_base.select_issue_type(
    message: 'Which issue type do you want to create?',
    refresh: !options['refresh-issue-type'].nil?
  )

  project = prompt_base.select_project(
    message: 'Which project does the issue belong to?',
    refresh: !options['refresh-project'].nil?
  )

  assignee = prompt_base.select_user(
    message: 'Who do you want to assign?',
    refresh: !options['refresh-user'].nil?,
    additional: [{ name: 'unassigned', value: nil }]
  )

  reporter = prompt_base.select_user(
    message: 'Who are you?',
    refresh: !options['refresh-user'].nil?
  )

  prompt = TTY::Prompt.new
  summary = prompt.ask('Please input issue summary: ')
  description = prompt.ask('Please input issue description: ')

  jira_issue = JiraCommand::Jira::Issue.new(config)

  issue_key = jira_issue.create(
    summary: summary,
    description: description,
    assignee: assignee,
    reporter: reporter,
    project_id: project[:id],
    issuetype_id: issue_type[:id]
  )

  puts 'the created issue url: ' + config[:jira_url] + 'browse/' + issue_key

  return if issue_type[:name] == 'Epic'

  baord_list = if !config[:boards].nil? && options['refresh-board'].nil?
                 config[:boards]
               else
                 agile_board = JiraCommand::Jira::Board.new(config)
                 agile_board.list
               end

  target_board = baord_list.find { |item| item[:projectId].to_i == project[:id].to_i }

  agile_epic = JiraCommand::Jira::Epic.new(config)
  epics = agile_epic.list(board_id: target_board[:id])

  epic_id = prompt.select('Which epic does the created issue belong to?') do |menu|
    epics.each do |item|
      menu.choice name: item[:name], value: item[:id]
    end
  end

  agile_epic.move_issue(epic_id: epic_id, issue_key: issue_key)

  exit 0 unless prompt.yes?('Do you want to attach to sprint?')

  sprint_id = prompt_base.select_sprint(board_id: target_board[:id])
  jira_sprint = JiraCommand::Jira::Sprint.new(config)
  jira_sprint.move_issue(issue_key: issue_key, sprint_id: sprint_id)
end