| 
									
										
										
										
											2023-08-08 13:54:59 -07:00
										 |  |  | # typed: strict | 
					
						
							| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-16 21:27:02 +01:00
										 |  |  | # Match a formula name. | 
					
						
							|  |  |  | HOMEBREW_TAP_FORMULA_NAME_REGEX = T.let(/(?<name>[\w+\-.@]+)/, Regexp) | 
					
						
							|  |  |  | # Match taps' formulae, e.g. `someuser/sometap/someformula`. | 
					
						
							|  |  |  | HOMEBREW_TAP_FORMULA_REGEX = T.let( | 
					
						
							| 
									
										
										
										
											2024-02-22 21:51:38 +01:00
										 |  |  |   %r{\A(?<user>[^/]+)/(?<repo>[^/]+)/#{HOMEBREW_TAP_FORMULA_NAME_REGEX.source}\Z}, | 
					
						
							| 
									
										
										
										
											2024-02-16 21:27:02 +01:00
										 |  |  |   Regexp, | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | # Match default formula taps' formulae, e.g. `homebrew/core/someformula` or `someformula`. | 
					
						
							|  |  |  | HOMEBREW_DEFAULT_TAP_FORMULA_REGEX = T.let( | 
					
						
							|  |  |  |   %r{\A(?:[Hh]omebrew/(?:homebrew-)?core/)?(?<name>#{HOMEBREW_TAP_FORMULA_NAME_REGEX.source})\Z}, | 
					
						
							|  |  |  |   Regexp, | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Match a cask token. | 
					
						
							|  |  |  | HOMEBREW_TAP_CASK_TOKEN_REGEX = T.let(/(?<token>[a-z0-9\-_]+(?:@[a-z0-9\-_.]+)?)/, Regexp) | 
					
						
							|  |  |  | # Match taps' casks, e.g. `someuser/sometap/somecask`. | 
					
						
							|  |  |  | HOMEBREW_TAP_CASK_REGEX = T.let( | 
					
						
							| 
									
										
										
										
											2024-02-22 21:51:38 +01:00
										 |  |  |   %r{\A(?<user>[^/]+)/(?<repo>[^/]+)/#{HOMEBREW_TAP_CASK_TOKEN_REGEX.source}\Z}, | 
					
						
							| 
									
										
										
										
											2024-02-16 21:27:02 +01:00
										 |  |  |   Regexp, | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | # Match default cask taps' casks, e.g. `homebrew/cask/somecask` or `somecask`. | 
					
						
							| 
									
										
										
										
											2024-02-09 16:59:40 +01:00
										 |  |  | HOMEBREW_DEFAULT_TAP_CASK_REGEX = T.let( | 
					
						
							| 
									
										
										
										
											2024-02-16 21:27:02 +01:00
										 |  |  |   %r{\A(?:[Hh]omebrew/(?:homebrew-)?cask/)?#{HOMEBREW_TAP_CASK_TOKEN_REGEX.source}\Z}, | 
					
						
							|  |  |  |   Regexp, | 
					
						
							| 
									
										
										
										
											2024-02-09 16:59:40 +01:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2024-02-16 21:27:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Match taps' directory paths, e.g. `HOMEBREW_LIBRARY/Taps/someuser/sometap`. | 
					
						
							| 
									
										
										
										
											2023-08-08 13:54:59 -07:00
										 |  |  | HOMEBREW_TAP_DIR_REGEX = T.let( | 
					
						
							| 
									
										
										
										
											2024-02-22 21:51:38 +01:00
										 |  |  |   %r{#{Regexp.escape(HOMEBREW_LIBRARY.to_s)}/Taps/(?<user>[^/]+)/(?<repo>[^/]+)}, | 
					
						
							| 
									
										
										
										
											2024-02-16 21:27:02 +01:00
										 |  |  |   Regexp, | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | # Match taps' formula paths, e.g. `HOMEBREW_LIBRARY/Taps/someuser/sometap/someformula`. | 
					
						
							|  |  |  | HOMEBREW_TAP_PATH_REGEX = T.let(Regexp.new(HOMEBREW_TAP_DIR_REGEX.source + %r{(?:/.*)?\Z}.source).freeze, Regexp) | 
					
						
							| 
									
										
										
										
											2024-02-22 21:51:38 +01:00
										 |  |  | # Match official cask taps, e.g `homebrew/cask`. | 
					
						
							|  |  |  | HOMEBREW_CASK_TAP_REGEX = T.let( | 
					
						
							|  |  |  |   %r{(?:([Cc]askroom)/(cask|versions)|([Hh]omebrew)/(?:homebrew-)?(cask|cask-[\w-]+))}, | 
					
						
							|  |  |  |   Regexp, | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | # Match official taps' casks, e.g. `homebrew/cask/somecask` or `homebrew/cask-versions/somecask`. | 
					
						
							| 
									
										
										
										
											2024-02-16 21:27:02 +01:00
										 |  |  | HOMEBREW_CASK_TAP_CASK_REGEX = T.let( | 
					
						
							| 
									
										
										
										
											2024-02-22 21:51:38 +01:00
										 |  |  |   %r{\A#{HOMEBREW_CASK_TAP_REGEX.source}/#{HOMEBREW_TAP_CASK_TOKEN_REGEX.source}\Z}, | 
					
						
							| 
									
										
										
										
											2024-02-16 21:27:02 +01:00
										 |  |  |   Regexp, | 
					
						
							| 
									
										
										
										
											2024-02-08 12:14:26 +01:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2024-02-16 21:27:02 +01:00
										 |  |  | HOMEBREW_OFFICIAL_REPO_PREFIXES_REGEX = T.let(/\A(home|linux)brew-/, Regexp) |