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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/toolshed/commands/create_pull_request.rb', line 4
def execute(args, options = {})
puts "Current Branch: #{Toolshed::Git::Base.branch_name}"
puts "Branched From: #{Toolshed::Git::Base.branched_from}"
puts "Using Defaults: #{(Toolshed::Client.use_defaults.nil?) ? 'No' : 'Yes'}"
unless (Toolshed::Client.ticket_tracking_tool.nil? || Toolshed::Client.ticket_tracking_tool.empty?)
ticket_tracking_url = ''
ticket_tracking_title = ''
ticket_id = ''
begin
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
ticket_id = read_user_input_ticket_tracker_ticket_id(
"Ticket ID (Default: #{Toolshed::TicketTracking::story_id_from_branch_name(Toolshed::Git::Base.branch_name)}):", {
default: Toolshed::TicketTracking::story_id_from_branch_name(Toolshed::Git::Base.branch_name),
}
)
options.merge!({
ticket_id: ticket_id,
})
ticket_tracker = ticket_tracker_class.create_instance(options)
ticket_tracking_url = ticket_tracker.url
ticket_tracking_title = ticket_tracker.title
ticket_id = ticket_id
puts "Ticket Tracking URL: #{ticket_tracking_url}"
puts "Ticket Tracking title: #{ticket_tracking_title}"
puts "Ticket ID: #{ticket_id}"
rescue Exception => e
puts e.inspect
puts "Ticket tracking tool is not supported at this time"
return
end
end
pull_request_url = ''
begin
git_tool_class = Object.const_get("Toolshed::Git::#{Toolshed::Client.git_tool.camel_case}")
git_tool = git_tool_class.create_instance
title = read_user_input_pull_request_title(
"Pull request title (Default: #{ticket_tracking_title}):",
options.merge!({
default: ticket_tracking_title,
})
)
body = read_user_input_pull_request_body(
"Pull request body (Default: #{ticket_tracking_url}):",
options.merge!({
default: ticket_tracking_url
})
)
puts "Pull request being created"
git_pull_request_result = git_tool.create_pull_request(title, body)
pull_request_url = git_pull_request_result["html_url"]
unless (Toolshed::Client.ticket_tracking_tool.nil? || Toolshed::Client.ticket_tracking_tool.empty?)
add_note_to_ticket = read_user_input_add_note_to_ticket("Would you like to add a note with the pull request url?")
if (add_note_to_ticket)
result = ticket_tracker.add_note(pull_request_url)
default_completed_status = Object.const_get("#{ticket_tracker_class}::DEFAULT_COMPLETED_STATUS") rescue false
unless (default_completed_status)
default_completed_status = Toolshed::Client.ticket_status_for_complete
end
result = ticket_tracker.update_ticket_status(default_completed_status)
end
end
puts "Created Pull Request: #{pull_request_url}"
rescue => e
puts e.message
exit
end
end
|