Class: Toolshed::Commands::CreateTicketComment

Inherits:
Object
  • Object
show all
Defined in:
lib/toolshed/commands/create_ticket_comment.rb

Instance Method Summary collapse

Instance Method Details

#execute(args, options = {}) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/toolshed/commands/create_ticket_comment.rb', line 4

def execute(args, options = {})
  ticket_tracker_class =  Object.const_get("Toolshed::TicketTracking::#{Toolshed::Client.ticket_tracking_tool.camel_case}")

  use_project_id = Object.const_get("#{ticket_tracker_class}::USE_PROJECT_ID") rescue false
  if use_project_id
    ticket_tracker_project_id = read_user_input_project(
      "Project ID (Default: #{Toolshed::Client.default_pivotal_tracker_project_id}):",
      options.merge!({
        default: Toolshed::Client.default_pivotal_tracker_project_id,
      })
    )
    options.merge!({
      project_id: ticket_tracker_project_id
    })
  end

  use_project_name = Object.const_get("#{ticket_tracker_class}::USE_PROJECT_NAME") rescue false
  if use_project_name
    ticket_tracker_project_name = read_user_input_project(
      "Project Name (Default: #{Toolshed::Client.default_ticket_tracker_project}):",
      options.merge!({ default: Toolshed::Client.default_ticket_tracker_project })
    )
    options.merge!({
      project: ticket_tracker_project_name
    })
  end

  default_ticket_id = Toolshed::TicketTracking::story_id_from_branch_name(Toolshed::Git::Base.branch_name)
  ticket_id = read_user_input_ticket_id("Ticket ID (Default: #{default_ticket_id}):", options.merge!({ default: default_ticket_id }))
  options.merge!({ ticket_id: ticket_id })

  ticket_tracker = ticket_tracker_class.create_instance(options)

  if use_project_id
    puts "Using Project: #{ticket_tracker_project_id}"
  end
  puts "Using Ticket: #{ticket_id}"

  puts "Note? "
  note_text = $stdin.gets.chomp.strip

  begin
    result = ticket_tracker.add_note(note_text)
    if (result)
      puts "Comment has been added to ticket"
    else
      puts "Unable to add comment #{result.inspect}"
    end
  rescue => e
    puts e.message
    exit
  end
end

#read_user_input_project(message, options) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/toolshed/commands/create_ticket_comment.rb', line 58

def read_user_input_project(message, options)
  return options[:default] if (options.has_key?(:use_defaults))

  puts message
  value = $stdin.gets.chomp

  if (value.empty?)
    value = options[:default]
  end

  value
end

#read_user_input_ticket_id(message, options) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/toolshed/commands/create_ticket_comment.rb', line 71

def read_user_input_ticket_id(message, options)
  return options[:default] if (options.has_key?(:use_defaults))

  puts message
  value = $stdin.gets.chomp

  if (value.empty?)
    value = options[:default]
  end

  value
end