From e25eda566cbbd3cab981f9bede7436ecac82619d Mon Sep 17 00:00:00 2001 From: Aaron Oehlschlaeger Date: Sun, 8 Sep 2024 14:50:47 -0700 Subject: [PATCH] example runner / linter checksum --- lib/erb_lint/cache.rb | 6 +++++- lib/erb_lint/cli.rb | 3 +++ lib/erb_lint/linter.rb | 6 ++++++ lib/erb_lint/linters/rubocop.rb | 9 +++++++++ lib/erb_lint/runner.rb | 9 +++++++++ 5 files changed, 32 insertions(+), 1 deletion(-) diff --git a/lib/erb_lint/cache.rb b/lib/erb_lint/cache.rb index 928b209..e3f79af 100644 --- a/lib/erb_lint/cache.rb +++ b/lib/erb_lint/cache.rb @@ -67,6 +67,10 @@ def clear FileUtils.rm_r(@cache_dir) end + def set_runner_checksum(checksum) + @runner_checksum = checksum + end + private attr_reader :config, :hits, :new_results @@ -76,7 +80,7 @@ def checksum(filename, file_content) mode = File.stat(filename).mode digester.update( - "#{mode}#{config.to_hash}#{ERBLint::VERSION}#{file_content}", + "#{mode}#{config.to_hash}#{ERBLint::VERSION}#{@runner_checksum}#{file_content}", ) digester.hexdigest rescue Errno::ENOENT diff --git a/lib/erb_lint/cli.rb b/lib/erb_lint/cli.rb index 34b847a..ace4e6d 100644 --- a/lib/erb_lint/cli.rb +++ b/lib/erb_lint/cli.rb @@ -79,6 +79,9 @@ def run(args = ARGV) reporter.preview runner = ERBLint::Runner.new(file_loader, @config, @options[:disable_inline_configs]) + + @cache.set_runner_checksum(runner.checksum) if cache? + file_content = nil lint_files.each do |filename| diff --git a/lib/erb_lint/linter.rb b/lib/erb_lint/linter.rb index 0c8ceea..bfdeeac 100644 --- a/lib/erb_lint/linter.rb +++ b/lib/erb_lint/linter.rb @@ -70,6 +70,12 @@ def clear_offenses @offenses = [] end + # Allows linters to specify their own checksums to bust caches, etc. + # for dependencies and things not represented in the erblint config. + def checksum + nil + end + private def update_offense_status(processed_source) diff --git a/lib/erb_lint/linters/rubocop.rb b/lib/erb_lint/linters/rubocop.rb index f48816c..9308595 100644 --- a/lib/erb_lint/linters/rubocop.rb +++ b/lib/erb_lint/linters/rubocop.rb @@ -63,6 +63,15 @@ def autocorrect(processed_source, offense) end end + def checksum + digester = Digest::SHA1.new + gemfile_lock = File.read("Gemfile.lock") if File.exist?("Gemfile.lock") + digester.update( + "#{gemfile_lock}#{@rubocop_config.to_hash}" + ) + digester.hexdigest + end + private def descendant_nodes(processed_source) diff --git a/lib/erb_lint/runner.rb b/lib/erb_lint/runner.rb index ba399ee..d3b438e 100644 --- a/lib/erb_lint/runner.rb +++ b/lib/erb_lint/runner.rb @@ -42,6 +42,15 @@ def restore_offenses(offenses) @offenses.concat(offenses) end + def checksum + digester = Digest::SHA1.new + @linters.each do |linter| + linter_checksum = linter.checksum + digester.update(linter_checksum) if linter_checksum + end + digester.hexdigest + end + private def enable_inline_configs?