| 
									
										
										
										
											2020-10-10 14:16:11 +02:00
										 |  |  | # typed: true | 
					
						
							| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  | require "forwardable" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module RuboCop | 
					
						
							|  |  |  |   module Cop | 
					
						
							|  |  |  |     module Cask | 
					
						
							|  |  |  |       # Do not use the deprecated DSL version syntax in your cask header. | 
					
						
							|  |  |  |       # | 
					
						
							|  |  |  |       # @example | 
					
						
							|  |  |  |       #   # bad | 
					
						
							|  |  |  |       #   cask :v1 => 'foo' do | 
					
						
							|  |  |  |       #     ... | 
					
						
							|  |  |  |       #   end | 
					
						
							|  |  |  |       # | 
					
						
							|  |  |  |       #   # good | 
					
						
							|  |  |  |       #   cask 'foo' do | 
					
						
							|  |  |  |       #     ... | 
					
						
							|  |  |  |       #   end | 
					
						
							| 
									
										
										
										
											2021-01-12 18:25:05 +11:00
										 |  |  |       class NoDslVersion < Base | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  |         extend T::Sig | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |         extend Forwardable | 
					
						
							| 
									
										
										
										
											2021-01-12 18:25:05 +11:00
										 |  |  |         extend AutoCorrector | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |         include CaskHelp | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-03 08:50:45 +02:00
										 |  |  |         MESSAGE = "Use `%<preferred>s` instead of `%<current>s`" | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         def on_cask(cask_block) | 
					
						
							|  |  |  |           @cask_header = cask_block.header | 
					
						
							|  |  |  |           return unless offense? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           offense | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def_delegator :@cask_header, :source_range, :header_range | 
					
						
							|  |  |  |         def_delegators :@cask_header, :header_str, :preferred_header_str | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def cask_header(method_node) | 
					
						
							|  |  |  |           RuboCop::Cask::AST::CaskHeader.new(method_node) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def offense? | 
					
						
							|  |  |  |           @cask_header.dsl_version? | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def offense | 
					
						
							| 
									
										
										
										
											2021-01-12 18:25:05 +11:00
										 |  |  |           add_offense(header_range, message: error_msg) do |corrector| | 
					
						
							|  |  |  |             corrector.replace(header_range, preferred_header_str) | 
					
						
							|  |  |  |           end | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-20 12:03:48 +02:00
										 |  |  |         sig { returns(String) } | 
					
						
							| 
									
										
										
										
											2018-10-26 19:49:21 +01:00
										 |  |  |         def error_msg | 
					
						
							|  |  |  |           format(MESSAGE, preferred: preferred_header_str, current: header_str) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |