 a1f112f3fe
			
		
	
	
		a1f112f3fe
		
			
		
	
	
	
	
		
			
			This reduces the surface area of our `Kernel` monkeypatch and removes the need to `include Kernel` in a bunch of modules. While we're here, also move `Kernel#require?` to `Homebrew` and fully scope the calls to it.
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # typed: strict
 | |
| # frozen_string_literal: true
 | |
| 
 | |
| require "utils/github"
 | |
| require "utils/output"
 | |
| require "json"
 | |
| 
 | |
| # GitHub Releases client.
 | |
| class GitHubReleases
 | |
|   include Context
 | |
|   include Utils::Output::Mixin
 | |
| 
 | |
|   URL_REGEX = %r{https://github\.com/([\w-]+)/([\w-]+)?/releases/download/(.+)}
 | |
| 
 | |
|   sig { params(bottles_hash: T::Hash[String, T.untyped]).void }
 | |
|   def upload_bottles(bottles_hash)
 | |
|     bottles_hash.each_value do |bottle_hash|
 | |
|       root_url = bottle_hash["bottle"]["root_url"]
 | |
|       url_match = root_url.match URL_REGEX
 | |
|       _, user, repo, tag = *url_match
 | |
| 
 | |
|       # Ensure a release is created.
 | |
|       release = begin
 | |
|         rel = GitHub.get_release user, repo, tag
 | |
|         odebug "Existing GitHub release \"#{tag}\" found"
 | |
|         rel
 | |
|       rescue GitHub::API::HTTPNotFoundError
 | |
|         odebug "Creating new GitHub release \"#{tag}\""
 | |
|         GitHub.create_or_update_release user, repo, tag
 | |
|       end
 | |
| 
 | |
|       # Upload bottles as release assets.
 | |
|       bottle_hash["bottle"]["tags"].each_value do |tag_hash|
 | |
|         remote_file = tag_hash["filename"]
 | |
|         local_file = tag_hash["local_filename"]
 | |
|         odebug "Uploading #{remote_file}"
 | |
|         GitHub.upload_release_asset user, repo, release["id"], local_file:, remote_file:
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |