| 
									
										
										
										
											2021-09-11 01:00:23 +01:00
										 |  |  | # typed: true | 
					
						
							| 
									
										
										
										
											2021-08-06 02:30:44 -04:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Homebrew | 
					
						
							|  |  |  |   module API | 
					
						
							|  |  |  |     # Helper functions for using the versions JSON API. | 
					
						
							|  |  |  |     # | 
					
						
							|  |  |  |     # @api private | 
					
						
							|  |  |  |     module Versions | 
					
						
							| 
									
										
										
										
											2021-08-09 16:48:13 -04:00
										 |  |  |       class << self | 
					
						
							|  |  |  |         extend T::Sig | 
					
						
							| 
									
										
										
										
											2021-08-06 02:30:44 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-09 16:48:13 -04:00
										 |  |  |         def formulae | 
					
						
							|  |  |  |           # The result is cached by Homebrew::API.fetch | 
					
						
							|  |  |  |           Homebrew::API.fetch "versions-formulae.json" | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2021-08-06 02:30:44 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-09 16:48:13 -04:00
										 |  |  |         def linux | 
					
						
							|  |  |  |           # The result is cached by Homebrew::API.fetch | 
					
						
							|  |  |  |           Homebrew::API.fetch "versions-linux.json" | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2021-08-06 02:30:44 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-09 16:48:13 -04:00
										 |  |  |         def casks | 
					
						
							|  |  |  |           # The result is cached by Homebrew::API.fetch | 
					
						
							|  |  |  |           Homebrew::API.fetch "versions-casks.json" | 
					
						
							| 
									
										
										
										
											2021-08-06 02:30:44 -04:00
										 |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-09 16:48:13 -04:00
										 |  |  |         sig { params(name: String).returns(T.nilable(PkgVersion)) } | 
					
						
							|  |  |  |         def latest_formula_version(name) | 
					
						
							| 
									
										
										
										
											2021-08-29 21:40:35 +02:00
										 |  |  |           versions = if OS.mac? || | 
					
						
							|  |  |  |                         Homebrew::EnvConfig.force_homebrew_on_linux? || | 
					
						
							|  |  |  |                         Homebrew::EnvConfig.force_homebrew_core_repo_on_linux? | 
					
						
							| 
									
										
										
										
											2021-08-09 16:48:13 -04:00
										 |  |  |             formulae | 
					
						
							|  |  |  |           else | 
					
						
							|  |  |  |             linux | 
					
						
							|  |  |  |           end | 
					
						
							| 
									
										
										
										
											2021-08-06 02:30:44 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-09 16:48:13 -04:00
										 |  |  |           return unless versions.key? name | 
					
						
							| 
									
										
										
										
											2021-08-06 02:30:44 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-09 16:48:13 -04:00
										 |  |  |           version = Version.new(versions[name]["version"]) | 
					
						
							|  |  |  |           revision = versions[name]["revision"] | 
					
						
							|  |  |  |           PkgVersion.new(version, revision) | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2021-08-06 02:30:44 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-09 16:48:13 -04:00
										 |  |  |         sig { params(token: String).returns(T.nilable(Version)) } | 
					
						
							|  |  |  |         def latest_cask_version(token) | 
					
						
							|  |  |  |           return unless casks.key? token | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-26 22:52:43 -04:00
										 |  |  |           version = if casks[token]["versions"].key? MacOS.version.to_sym.to_s | 
					
						
							|  |  |  |             casks[token]["versions"][MacOS.version.to_sym.to_s] | 
					
						
							|  |  |  |           else | 
					
						
							|  |  |  |             casks[token]["version"] | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |           Version.new(version) | 
					
						
							| 
									
										
										
										
											2021-08-09 16:48:13 -04:00
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2021-08-06 02:30:44 -04:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |