| 
									
										
										
										
											2024-11-18 23:17:18 +00:00
										 |  |  | # typed: strict | 
					
						
							| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  | module RuboCop | 
					
						
							|  |  |  |   module Cask | 
					
						
							| 
									
										
										
										
											2020-11-05 17:17:03 -05:00
										 |  |  |     # Constants available globally for use in all cask cops. | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |     module Constants | 
					
						
							| 
									
										
										
										
											2024-11-18 23:17:18 +00:00
										 |  |  |       ON_SYSTEM_METHODS = T.let( | 
					
						
							|  |  |  |         [:arm, :intel, *MacOSVersion::SYMBOLS.keys].map { |option| :"on_#{option}" }.freeze, | 
					
						
							|  |  |  |         T::Array[Symbol], | 
					
						
							|  |  |  |       ) | 
					
						
							|  |  |  |       ON_SYSTEM_METHODS_STANZA_ORDER = T.let( | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |         [ | 
					
						
							| 
									
										
										
										
											2024-11-18 23:17:18 +00:00
										 |  |  |           :arm, | 
					
						
							|  |  |  |           :intel, | 
					
						
							|  |  |  |           *MacOSVersion::SYMBOLS.reverse_each.to_h.keys, # Oldest OS blocks first since that's more common in Casks. | 
					
						
							|  |  |  |         ].map { |option, _| :"on_#{option}" }.freeze, | 
					
						
							|  |  |  |         T::Array[Symbol], | 
					
						
							|  |  |  |       ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       STANZA_GROUPS = T.let( | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |         [ | 
					
						
							| 
									
										
										
										
											2025-03-16 21:25:44 +00:00
										 |  |  |           [:arch, :on_arch_conditional, :os], | 
					
						
							| 
									
										
										
										
											2024-11-18 23:17:18 +00:00
										 |  |  |           [:version, :sha256], | 
					
						
							|  |  |  |           ON_SYSTEM_METHODS_STANZA_ORDER, | 
					
						
							|  |  |  |           [:language], | 
					
						
							|  |  |  |           [:url, :appcast, :name, :desc, :homepage], | 
					
						
							|  |  |  |           [:livecheck], | 
					
						
							|  |  |  |           [:deprecate!, :disable!], | 
					
						
							|  |  |  |           [ | 
					
						
							|  |  |  |             :auto_updates, | 
					
						
							|  |  |  |             :conflicts_with, | 
					
						
							|  |  |  |             :depends_on, | 
					
						
							|  |  |  |             :container, | 
					
						
							|  |  |  |           ], | 
					
						
							|  |  |  |           [ | 
					
						
							|  |  |  |             :suite, | 
					
						
							|  |  |  |             :app, | 
					
						
							|  |  |  |             :pkg, | 
					
						
							|  |  |  |             :installer, | 
					
						
							|  |  |  |             :binary, | 
					
						
							|  |  |  |             :manpage, | 
					
						
							|  |  |  |             :colorpicker, | 
					
						
							|  |  |  |             :dictionary, | 
					
						
							|  |  |  |             :font, | 
					
						
							|  |  |  |             :input_method, | 
					
						
							|  |  |  |             :internet_plugin, | 
					
						
							|  |  |  |             :keyboard_layout, | 
					
						
							|  |  |  |             :prefpane, | 
					
						
							|  |  |  |             :qlplugin, | 
					
						
							|  |  |  |             :mdimporter, | 
					
						
							|  |  |  |             :screen_saver, | 
					
						
							|  |  |  |             :service, | 
					
						
							|  |  |  |             :audio_unit_plugin, | 
					
						
							|  |  |  |             :vst_plugin, | 
					
						
							|  |  |  |             :vst3_plugin, | 
					
						
							|  |  |  |             :artifact, | 
					
						
							|  |  |  |             :stage_only, | 
					
						
							|  |  |  |           ], | 
					
						
							|  |  |  |           [:preflight], | 
					
						
							|  |  |  |           [:postflight], | 
					
						
							|  |  |  |           [:uninstall_preflight], | 
					
						
							|  |  |  |           [:uninstall_postflight], | 
					
						
							|  |  |  |           [:uninstall], | 
					
						
							|  |  |  |           [:zap], | 
					
						
							|  |  |  |           [:caveats], | 
					
						
							|  |  |  |         ].freeze, | 
					
						
							|  |  |  |         T::Array[T::Array[Symbol]], | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-18 23:17:18 +00:00
										 |  |  |       STANZA_GROUP_HASH = T.let( | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |         STANZA_GROUPS.each_with_object({}) do |stanza_group, hash| | 
					
						
							|  |  |  |           stanza_group.each { |stanza| hash[stanza] = stanza_group } | 
					
						
							| 
									
										
										
										
											2024-11-18 23:17:18 +00:00
										 |  |  |         end.freeze, | 
					
						
							|  |  |  |         T::Hash[Symbol, T::Array[Symbol]], | 
					
						
							|  |  |  |       ) | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-18 23:17:18 +00:00
										 |  |  |       STANZA_ORDER = T.let(STANZA_GROUPS.flatten.freeze, T::Array[Symbol]) | 
					
						
							| 
									
										
										
										
											2023-12-20 18:37:49 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |       UNINSTALL_METHODS_ORDER = [ | 
					
						
							|  |  |  |         :early_script, | 
					
						
							|  |  |  |         :launchctl, | 
					
						
							|  |  |  |         :quit, | 
					
						
							|  |  |  |         :signal, | 
					
						
							|  |  |  |         :login_item, | 
					
						
							|  |  |  |         :kext, | 
					
						
							|  |  |  |         :script, | 
					
						
							|  |  |  |         :pkgutil, | 
					
						
							|  |  |  |         :delete, | 
					
						
							|  |  |  |         :trash, | 
					
						
							|  |  |  |         :rmdir, | 
					
						
							|  |  |  |       ].freeze | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |