class Codeowners::Cli::Wizards::UselessPatternWizard

Suggests to fix useless patterns in the codeowners file. Only returns decision without applying any modifications.

Public Instance Methods

suggest_fixing(line) click to toggle source
# File lib/codeowners/cli/wizards/useless_pattern_wizard.rb, line 13
def suggest_fixing(line)
  puts "Pattern #{line.pattern.inspect} doesn't match."
  suggestion = Codeowners::Cli::SuggestFileFromPattern.new(line.pattern).pick_suggestion

  # TODO: Handle duplicate patterns.
  if suggestion
    apply_suggestion(line, suggestion)
  else
    pattern_fix(line)
  end
end

Private Instance Methods

apply_suggestion(line, suggestion) click to toggle source
# File lib/codeowners/cli/wizards/useless_pattern_wizard.rb, line 27
def apply_suggestion(line, suggestion)
  case make_suggestion(suggestion)
  when 'i' then :ignore
  when 'y' then [:replace, suggestion]
  when 'e' then edit_pattern(line)
  when 'd' then :delete
  when 'q' then :quit
  end
end
edit_pattern(line) click to toggle source
# File lib/codeowners/cli/wizards/useless_pattern_wizard.rb, line 66
def edit_pattern(line)
  new_pattern = ask("Replace pattern #{line.pattern.inspect} with: ")
  return :nop if new_pattern.empty?

  [:replace, new_pattern]
end
make_suggestion(suggestion) click to toggle source
# File lib/codeowners/cli/wizards/useless_pattern_wizard.rb, line 37
        def make_suggestion(suggestion)
          ask(<<~QUESTION, limited_to: %w[y i e d q])
            Replace with: #{suggestion.inspect}?
            (y) yes
            (i) ignore
            (e) edit the pattern
            (d) delete the pattern
            (q) quit and save
          QUESTION
        end
pattern_fix(line) click to toggle source
# File lib/codeowners/cli/wizards/useless_pattern_wizard.rb, line 48
def pattern_fix(line)
  case pattern_suggest_fixing
  when 'e' then edit_pattern(line)
  when 'i' then :ignore
  when 'd' then :delete
  when 'q' then :quit
  end
end
pattern_suggest_fixing() click to toggle source
# File lib/codeowners/cli/wizards/useless_pattern_wizard.rb, line 57
        def pattern_suggest_fixing
          ask(<<~QUESTION, limited_to: %w[i e d q])
            (e) edit the pattern
            (d) delete the pattern
            (i) ignore
            (q) quit and save
          QUESTION
        end