Module: RuboCop::PathUtil

Overview

Common methods and behaviors for dealing with paths.

Class Method Summary collapse

Class Method Details

.issue_deprecation_warning(basename, pattern, config_path) ⇒ Object


32
33
34
35
36
37
38
39
40
# File 'lib/rubocop/path_util.rb', line 32

def issue_deprecation_warning(basename, pattern, config_path)
  instruction = if basename == pattern
                  ". Change to '**/#{pattern}'."
                elsif pattern.end_with?('**')
                  ". Change to '#{pattern}/*'."
                end
  warn("Warning: Deprecated pattern style '#{pattern}' in " \
       "#{config_path}#{instruction}")
end

.match_path?(pattern, path, config_path) ⇒ Boolean

TODO: The old way of matching patterns is flawed, so a new one has been introduced. We keep supporting the old way for a while and issue deprecation warnings when a pattern is used that produced a match with the old way but doesn't match with the new.

Returns:

  • (Boolean)

17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rubocop/path_util.rb', line 17

def match_path?(pattern, path, config_path)
  case pattern
  when String
    basename = File.basename(path)
    old_match = basename == pattern || File.fnmatch?(pattern, path)
    new_match = File.fnmatch?(pattern, path, File::FNM_PATHNAME)
    if old_match && !new_match
      issue_deprecation_warning(basename, pattern, config_path)
    end
    old_match || new_match
  when Regexp
    path =~ pattern
  end
end

.relative_path(path, base_dir = Dir.pwd) ⇒ Object


8
9
10
11
# File 'lib/rubocop/path_util.rb', line 8

def relative_path(path, base_dir = Dir.pwd)
  path_name = Pathname.new(File.expand_path(path))
  path_name.relative_path_from(Pathname.new(base_dir)).to_s
end