@@ -20,28 +20,35 @@ def find_forward_merge(message_file)
2020 message . each_line do |line |
2121 match = /^(?:Fixes|Closes) gh-(\d +) in ([\d \. ]+(?:(?:M|RC)\d )?)$/ . match ( line )
2222 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 )
2626 end
2727 end
2828 return nil
2929end
3030
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 )
3339 milestones . each do |milestone |
3440 return milestone [ 'number' ] if milestone [ 'title' ] == title
3541 end
3642 puts "Milestone #{ title } not found"
3743 exit 1
3844end
3945
40- def get_issue ( repository , number )
46+ def get_issue ( username , password , repository , number )
4147 uri = URI ( "https://api.github.com/repos/#{ repository } /issues/#{ number } " )
4248 http = Net ::HTTP . new ( uri . host , uri . port )
4349 http . use_ssl = true
4450 request = Net ::HTTP ::Get . new ( uri . path )
51+ request . basic_auth ( username , password )
4552 response = http . request ( request )
4653 return JSON . parse ( response . body ) unless response . code != '200'
4754 puts "Failed to retrieve issue #{ number } : #{ response . message } "
7279message_file = ARGV [ 0 ]
7380forward_merge = find_forward_merge ( message_file )
7481exit 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 )
8182config = YAML . load_file ( File . join ( Dir . home , '.spring-boot' , 'forward-merge.yml' ) )
8283username = config [ 'github' ] [ 'credentials' ] [ 'username' ]
8384password = config [ 'github' ] [ 'credentials' ] [ 'password' ]
8485dry_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 )
8592new_issue_number = create_issue ( username , password , repository , forward_merge . issue , title , labels , milestone , forward_merge . milestone , dry_run )
8693puts "Created gh-#{ new_issue_number } for forward port of gh-#{ forward_merge . issue } into #{ forward_merge . milestone } "
8794rewritten_message = forward_merge . message . sub ( forward_merge . line , "Closes gh-#{ new_issue_number } \n " )
0 commit comments