Sha256: 0c0604e4d2c4f3882cdb19e437f0c99eb9fa2e9af43b079aa86ca8c723577e1d

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

require "rake"
require "rake/tasklib"

module RuboCop
  module Katalyst
    # Provides a custom rake task.
    #
    # require 'rubocop/katalyst/erb_lint_task'
    # RuboCop::Katalyst::ErbLintTask.new
    class ErbLintTask < ::Rake::TaskLib
      attr_accessor :verbose

      def initialize(verbose: true)
        super()

        @verbose = verbose

        desc "Run ErbLint" unless ::Rake.application.last_description
        task(erb_lint: "erb_lint:lint")

        setup_subtasks

        task(lint: :erb_lint)
        task(autocorrect: "erb_lint:autocorrect")
      end

      private

      def run_cli(verbose, *options)
        require "erb_lint/cli"

        cli = ERBLint::CLI.new
        puts "Running ERBLint" if verbose
        result = cli.run(["--config", config.to_path, *options])
        abort("ERBLint failed!") unless result
      end

      def setup_subtasks
        namespace :erb_lint do
          desc "Run erb_lint linter"
          task :lint do
            run_cli(verbose, "--lint-all")
          end

          desc "Run erb_lint autocorrect"
          task :autocorrect do
            run_cli(verbose, "--lint-all", "-a")
          end
        end
      end

      def config
        config = Pathname.new(".erb-lint.yml")
        config = default_config unless config.exist?
        config
      end

      def default_config
        Pathname.new(__dir__).join("../../.erb-lint.yml")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rubocop-katalyst-1.1.0 lib/rubocop/katalyst/erb_lint_task.rb