Sha256: 8b8df21aa9ffe416ce44fb3ef87e222cdc3e746e6a718426b56aa1dc8f8ae7e8

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

# frozen_string_literal: true

require "refinements/arrays"

module Gemsmith
  module Generators
    # Generates Rake support.
    class Rake < Base
      using Refinements::Arrays

      def run
        template "%gem_name%/Rakefile.tt"
        append_code_quality_task
        append_default_task
      end

      def generate_code_quality_task
        return "" if code_quality_tasks.empty?

        %(\ndesc "Run code quality checks"\ntask code_quality: %i[#{code_quality_tasks}]\n)
      end

      def generate_default_task
        return "" if default_task.empty?

        %(\ntask default: %i[#{default_task}]\n)
      end

      private

      def rspec_task
        configuration.dig(:generate, :rspec) ? "spec" : ""
      end

      def bundler_audit_task
        configuration.dig(:generate, :bundler_audit) ? "bundle:audit" : ""
      end

      def git_lint_task
        configuration.dig(:generate, :git_lint) ? "git_lint" : ""
      end

      def reek_task
        configuration.dig(:generate, :reek) ? "reek" : ""
      end

      def rubocop_task
        configuration.dig(:generate, :rubocop) ? "rubocop" : ""
      end

      def code_quality_tasks
        [bundler_audit_task, git_lint_task, reek_task, rubocop_task].compress.join " "
      end

      def code_quality_task
        code_quality_tasks.empty? ? "" : "code_quality"
      end

      def default_task
        [code_quality_task, rspec_task].compress.join " "
      end

      def append_code_quality_task
        return if code_quality_task.empty?

        cli.append_to_file "%gem_name%/Rakefile", generate_code_quality_task
      end

      def append_default_task
        return if default_task.empty?

        cli.append_to_file "%gem_name%/Rakefile", generate_default_task
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gemsmith-15.5.0 lib/gemsmith/generators/rake.rb