class Toolshed::TicketTracking::Jira
Constants
- USE_PROJECT_NAME
Attributes
client[RW]
default_pull_request_title_format[RW]
owner[RW]
project[RW]
ticket[RW]
Public Class Methods
create_instance(options={})
click to toggle source
# File lib/toolshed/ticket_tracking/jira.rb, line 93 def create_instance(options={}) raise 'Unable to use Jira as project name was not supplied' unless (options.has_key?(:project)) raise 'Unable to use Jira as ticket id was not supplied' unless (options.has_key?(:ticket_id)) jira = Toolshed::TicketTracking::Jira.new({ project: options[:project], username: Toolshed::TicketTracking::Jira.username, password: Toolshed::TicketTracking::Jira.password, ticket_id: options[:ticket_id] }) end
new(options={})
click to toggle source
# File lib/toolshed/ticket_tracking/jira.rb, line 12 def initialize(options={}) username = (options[:username].nil?) ? Toolshed::Client.instance.ticket_tracker_username : options[:username] password = (options[:password].nil?) ? Toolshed::Client.instance.ticket_tracker_password : options[:password] self.owner = Toolshed::Client.instance.ticket_tracker_owner self.default_pull_request_title_format = Toolshed::Client.instance.default_pull_request_title_format ||= "[summary]" self.client = JIRA::Client.new({ username: username, password: password, site: "https://#{self.owner}.atlassian.net", context_path: '', auth_type: :basic, use_ssl: true, }) self.project = self.client.Project.find(options[:project]) self.ticket = self.client.Issue.find(options[:ticket_id]) end
password()
click to toggle source
# File lib/toolshed/ticket_tracking/jira.rb, line 83 def password return Toolshed::Client.instance.ticket_tracker_password unless Toolshed::Client.instance.ticket_tracker_password.nil? # prompt to ask for password system "stty -echo" puts "Jira password? " password = $stdin.gets.chomp.strip system "stty echo" end
username()
click to toggle source
# File lib/toolshed/ticket_tracking/jira.rb, line 75 def username return Toolshed::Client.instance.ticket_tracker_username unless Toolshed::Client.instance.ticket_tracker_username.nil? # prompt to ask for username puts "Jira username? " username = $stdin.gets.chomp.strip end
Public Instance Methods
add_note(note_text)
click to toggle source
# File lib/toolshed/ticket_tracking/jira.rb, line 32 def add_note(note_text) issue = self.ticket.comments.build issue.save({ 'body' => note_text }) end
attribute_value(attribute)
click to toggle source
# File lib/toolshed/ticket_tracking/jira.rb, line 66 def attribute_value(attribute) self.ticket.send(attribute) end
available_statuses()
click to toggle source
# File lib/toolshed/ticket_tracking/jira.rb, line 44 def available_statuses self.client.Transition.all(issue: self.ticket) end
default_title()
click to toggle source
# File lib/toolshed/ticket_tracking/jira.rb, line 58 def default_title default_title_text = self.default_pull_request_title_format self.default_pull_request_title_format.scan(/(\[\w*\])/).each do |replacement_element| default_title_text = default_title_text.gsub(replacement_element.first.to_s, self.send(replacement_element.first.to_s.gsub("[", "").gsub("]", ""))) end default_title_text end
transition_status_id_by_status(status)
click to toggle source
# File lib/toolshed/ticket_tracking/jira.rb, line 48 def transition_status_id_by_status(status) self.available_statuses.each do |transition_status| if (status == transition_status.name) return transition_status.id end end raise "Unable to find available status" end
update_ticket_status(status, options={})
click to toggle source
# File lib/toolshed/ticket_tracking/jira.rb, line 37 def update_ticket_status(status, options={}) available_statuses transition = self.ticket.transitions.build transition.save({ 'transition' => { "id" => transition_status_id_by_status(status) } }) end
url()
click to toggle source
# File lib/toolshed/ticket_tracking/jira.rb, line 70 def url "https://#{self.owner}.atlassian.net/browse/#{self.ticket.key}" end