55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | # typed: strict | ||
|  | # frozen_string_literal: true | ||
|  | 
 | ||
|  | module Homebrew | ||
|  |   # Class handling architecture-specific version information. | ||
|  |   # | ||
|  |   # @api private | ||
|  |   class BumpVersionParser | ||
|  |     sig { returns(T.nilable(T.any(Version, Cask::DSL::Version))) } | ||
|  |     attr_reader :arm, :general, :intel | ||
|  | 
 | ||
|  |     sig { | ||
|  |       params(general: T.nilable(T.any(Version, String)), | ||
|  |              arm:     T.nilable(T.any(Version, String)), | ||
|  |              intel:   T.nilable(T.any(Version, String))).void | ||
|  |     } | ||
|  |     def initialize(general: nil, arm: nil, intel: nil) | ||
|  |       @general = T.let(parse_version(general), T.nilable(T.any(Version, Cask::DSL::Version))) if general.present? | ||
|  |       @arm = T.let(parse_version(arm), T.nilable(T.any(Version, Cask::DSL::Version))) if arm.present? | ||
|  |       @intel = T.let(parse_version(intel), T.nilable(T.any(Version, Cask::DSL::Version))) if intel.present? | ||
|  | 
 | ||
|  |       return if @general.present? | ||
|  |       raise UsageError, "`--version` must not be empty." if arm.blank? && intel.blank? | ||
|  |       raise UsageError, "`--version-arm` must not be empty." if arm.blank? | ||
|  |       raise UsageError, "`--version-intel` must not be empty." if intel.blank? | ||
|  |     end | ||
|  | 
 | ||
|  |     sig { | ||
|  |       params(version: T.any(Version, String)) | ||
|  |         .returns(T.nilable(T.any(Version, Cask::DSL::Version))) | ||
|  |     } | ||
|  |     def parse_version(version) | ||
|  |       if version.is_a?(Version) | ||
|  |         version | ||
|  |       elsif version.is_a?(String) | ||
|  |         parse_cask_version(version) | ||
|  |       end | ||
|  |     end | ||
|  | 
 | ||
|  |     sig { params(version: String).returns(T.nilable(Cask::DSL::Version)) } | ||
|  |     def parse_cask_version(version) | ||
|  |       if version == "latest" | ||
|  |         Cask::DSL::Version.new(:latest) | ||
|  |       else | ||
|  |         Cask::DSL::Version.new(version) | ||
|  |       end | ||
|  |     end | ||
|  | 
 | ||
|  |     sig { returns(T::Boolean) } | ||
|  |     def blank? | ||
|  |       @general.blank? && @arm.blank? && @intel.blank? | ||
|  |     end | ||
|  |   end | ||
|  | end |