@@ -20,28 +20,35 @@ def find_forward_merge(message_file)
20
20
message . each_line do |line |
21
21
match = /^(?:Fixes|Closes) gh-(\d +) in ([\d \. ]+(?:(?:M|RC)\d )?)$/ . match ( line )
22
22
if match then
23
- issue = match [ 1 ]
24
- milestone = match [ 2 ]
25
- return ForwardMerge . new ( issue , milestone , message , line )
23
+ issue = match [ 1 ]
24
+ milestone = match [ 2 ]
25
+ return ForwardMerge . new ( issue , milestone , message , line )
26
26
end
27
27
end
28
28
return nil
29
29
end
30
30
31
- def find_milestone ( repository , title )
32
- milestones = JSON . parse ( Net ::HTTP . get ( URI ( "https://api.github.com/repos/#{ repository } /milestones" ) ) )
31
+ def find_milestone ( username , password , repository , title )
32
+ uri = URI ( "https://api.github.com/repos/#{ repository } /milestones" )
33
+ http = Net ::HTTP . new ( uri . host , uri . port )
34
+ http . use_ssl = true
35
+ request = Net ::HTTP ::Get . new ( uri . path )
36
+ request . basic_auth ( username , password )
37
+ response = http . request ( request )
38
+ milestones = JSON . parse ( response . body )
33
39
milestones . each do |milestone |
34
40
return milestone [ 'number' ] if milestone [ 'title' ] == title
35
41
end
36
42
puts "Milestone #{ title } not found"
37
43
exit 1
38
44
end
39
45
40
- def get_issue ( repository , number )
46
+ def get_issue ( username , password , repository , number )
41
47
uri = URI ( "https://api.github.com/repos/#{ repository } /issues/#{ number } " )
42
48
http = Net ::HTTP . new ( uri . host , uri . port )
43
49
http . use_ssl = true
44
50
request = Net ::HTTP ::Get . new ( uri . path )
51
+ request . basic_auth ( username , password )
45
52
response = http . request ( request )
46
53
return JSON . parse ( response . body ) unless response . code != '200'
47
54
puts "Failed to retrieve issue #{ number } : #{ response . message } "
72
79
message_file = ARGV [ 0 ]
73
80
forward_merge = find_forward_merge ( message_file )
74
81
exit 0 unless forward_merge
75
- repository = 'spring-projects/spring-boot'
76
- existing_issue = get_issue ( repository , forward_merge . issue )
77
- title = existing_issue [ 'title' ]
78
- labels = existing_issue [ 'labels' ] . map { |label | label [ 'name' ] }
79
- labels << "status: forward-port"
80
- milestone = find_milestone ( repository , forward_merge . milestone )
81
82
config = YAML . load_file ( File . join ( Dir . home , '.spring-boot' , 'forward-merge.yml' ) )
82
83
username = config [ 'github' ] [ 'credentials' ] [ 'username' ]
83
84
password = config [ 'github' ] [ 'credentials' ] [ 'password' ]
84
85
dry_run = config [ 'dry_run' ]
86
+ repository = 'spring-projects/spring-boot'
87
+ existing_issue = get_issue ( username , password , repository , forward_merge . issue )
88
+ title = existing_issue [ 'title' ]
89
+ labels = existing_issue [ 'labels' ] . map { |label | label [ 'name' ] }
90
+ labels << "status: forward-port"
91
+ milestone = find_milestone ( username , password , repository , forward_merge . milestone )
85
92
new_issue_number = create_issue ( username , password , repository , forward_merge . issue , title , labels , milestone , forward_merge . milestone , dry_run )
86
93
puts "Created gh-#{ new_issue_number } for forward port of gh-#{ forward_merge . issue } into #{ forward_merge . milestone } "
87
94
rewritten_message = forward_merge . message . sub ( forward_merge . line , "Closes gh-#{ new_issue_number } \n " )
0 commit comments