| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 20:27:42 +01:00
										 |  |  | require "bintray" | 
					
						
							| 
									
										
										
										
											2019-04-17 18:25:08 +09:00
										 |  |  | require "cli/parser" | 
					
						
							| 
									
										
										
										
											2018-04-10 18:37:15 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-20 11:00:51 +01:00
										 |  |  | module Homebrew | 
					
						
							| 
									
										
										
										
											2016-09-26 01:44:51 +02:00
										 |  |  |   module_function | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-30 18:25:38 +05:30
										 |  |  |   def mirror_args | 
					
						
							|  |  |  |     Homebrew::CLI::Parser.new do | 
					
						
							| 
									
										
										
										
											2018-09-28 21:39:52 +05:30
										 |  |  |       usage_banner <<~EOS | 
					
						
							| 
									
										
										
										
											2019-01-30 21:33:03 +00:00
										 |  |  |         `mirror` <formula> | 
					
						
							| 
									
										
										
										
											2018-10-02 19:54:22 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-18 12:13:43 -04:00
										 |  |  |         Reupload the stable URL of a formula to Bintray for use as a mirror. | 
					
						
							| 
									
										
										
										
											2018-09-28 21:39:52 +05:30
										 |  |  |       EOS | 
					
						
							| 
									
										
										
										
											2020-04-27 20:27:42 +01:00
										 |  |  |       flag "--bintray-org=", | 
					
						
							|  |  |  |            description: "Upload to the specified Bintray organisation (default: homebrew)." | 
					
						
							| 
									
										
										
										
											2018-04-01 16:47:30 +05:30
										 |  |  |       switch :verbose | 
					
						
							| 
									
										
										
										
											2018-10-08 22:49:03 -04:00
										 |  |  |       switch :debug | 
					
						
							| 
									
										
										
										
											2019-01-30 21:33:03 +00:00
										 |  |  |       hide_from_man_page! | 
					
						
							| 
									
										
										
										
											2020-03-04 17:28:24 +00:00
										 |  |  |       min_named :formula | 
					
						
							| 
									
										
										
										
											2018-04-01 16:47:30 +05:30
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2018-07-30 18:25:38 +05:30
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def mirror | 
					
						
							|  |  |  |     mirror_args.parse | 
					
						
							| 
									
										
										
										
											2018-04-01 16:47:30 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 20:27:42 +01:00
										 |  |  |     bintray_org = args.bintray_org || "homebrew" | 
					
						
							|  |  |  |     bintray_repo = "mirror" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     bintray = Bintray.new(org: bintray_org) | 
					
						
							| 
									
										
										
										
											2016-05-20 11:00:51 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-04 17:28:24 +00:00
										 |  |  |     args.formulae.each do |f| | 
					
						
							| 
									
										
										
										
											2016-05-20 11:00:51 +01:00
										 |  |  |       bintray_package = Utils::Bottles::Bintray.package f.name | 
					
						
							| 
									
										
										
										
											2020-04-27 20:27:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |       unless bintray.package_exists?(repo: bintray_repo, package: bintray_package) | 
					
						
							|  |  |  |         bintray.create_package repo: bintray_repo, package: bintray_package | 
					
						
							| 
									
										
										
										
											2016-05-20 11:00:51 +01:00
										 |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-01 10:19:55 +02:00
										 |  |  |       downloader = f.downloader | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       downloader.fetch | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-10 00:30:32 +01:00
										 |  |  |       filename = ERB::Util.url_encode(downloader.basename) | 
					
						
							| 
									
										
										
										
											2016-05-20 11:00:51 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-27 20:27:42 +01:00
										 |  |  |       destination_url = "https://dl.bintray.com/#{bintray_org}/#{bintray_repo}/#{filename}" | 
					
						
							| 
									
										
										
										
											2016-05-20 11:00:51 +01:00
										 |  |  |       ohai "Uploading to #{destination_url}" | 
					
						
							| 
									
										
										
										
											2018-10-01 10:19:55 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-10 00:30:32 +01:00
										 |  |  |       version = ERB::Util.url_encode(f.pkg_version) | 
					
						
							| 
									
										
										
										
											2020-04-27 20:27:42 +01:00
										 |  |  |       bintray.upload( | 
					
						
							|  |  |  |         downloader.cached_location, | 
					
						
							|  |  |  |         repo:        bintray_repo, | 
					
						
							|  |  |  |         package:     bintray_package, | 
					
						
							| 
									
										
										
										
											2020-05-10 00:30:32 +01:00
										 |  |  |         version:     version, | 
					
						
							| 
									
										
										
										
											2020-04-27 20:27:42 +01:00
										 |  |  |         sha256:      f.stable.checksum, | 
					
						
							|  |  |  |         remote_file: filename, | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2020-05-10 00:30:32 +01:00
										 |  |  |       bintray.publish(repo: bintray_repo, package: bintray_package, version: version) | 
					
						
							| 
									
										
										
										
											2016-05-20 11:00:51 +01:00
										 |  |  |       ohai "Mirrored #{filename}!" | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |