class Gemfilelint::Linter
Attributes
logger[R]
Public Class Methods
new(logger: nil)
click to toggle source
# File lib/gemfilelint.rb, line 124 def initialize(logger: nil) @logger = logger || make_logger end
Public Instance Methods
lint(*paths)
click to toggle source
rubocop:disable Metrics/AbcSize, Metrics/MethodLength
# File lib/gemfilelint.rb, line 129 def lint(*paths) logger.info("Inspecting gemfiles at #{paths.join(', ')}\n") offenses = [] each_offense_for(paths) do |offense| if offense offenses << offense logger.info('W'.colorize(:magenta)) else logger.info('.'.colorize(:green)) end end logger.info("\n") if offenses.empty? true else messages = offenses.map { |offense| offense_to_message(offense) } logger.info("\nOffenses:\n\n#{messages.join("\n")}\n") false end end
Private Instance Methods
each_offense_for(paths) { |offense| ... }
click to toggle source
rubocop:enable Metrics/AbcSize, Metrics/MethodLength
# File lib/gemfilelint.rb, line 157 def each_offense_for(paths) paths.each do |path| Parser.for(path).each_offense do |offense| yield offense end end end
make_logger()
click to toggle source
# File lib/gemfilelint.rb, line 165 def make_logger Logger.new($stdout).tap do |creating| creating.level = :info creating.formatter = ->(*, message) { message } end end
offense_to_message(offense)
click to toggle source
# File lib/gemfilelint.rb, line 172 def offense_to_message(offense) "#{offense.path.colorize(:cyan)}: #{'W'.colorize(:magenta)}: #{offense}" end