Sha256: 920385e0856630d6ad32687f7e7fa71518d37eec84c9db7fcb28359d8db26fcd

Contents?: true

Size: 1.24 KB

Versions: 4

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

require "rake"
require "rake/tasklib"

module Prettier
  module Rake
    # A Rake task that runs prettier on a set of source files.
    #
    # Example:
    #
    #   require 'prettier/rake/task'
    #
    #   Prettier::Rake::Task.new do |t|
    #     t.source_files = '{app,config,lib}/**/*.rb'
    #   end
    #
    # This will create a task that can be run with:
    #
    #   rake prettier
    #
    class Task < ::Rake::TaskLib
      # Name of prettier task.
      # Defaults to :prettier.
      attr_accessor :name

      # Whether or not to overwrite the source files with the prettier output.
      # Defaults to true.
      attr_accessor :write

      # Glob pattern to match source files.
      # Defaults to 'lib/**/*.rb'.
      attr_accessor :source_files

      def initialize(name = :prettier)
        @name = name
        @write = true
        @source_files = "lib/**/*.rb"

        yield self if block_given?
        define_task
      end

      private

      def define_task
        desc "Runs prettier over source files"
        task(name) { run_task }
      end

      def run_task
        Prettier.run([("--write" if write), source_files].compact)
        exit($?.exitstatus) if $?&.exited?
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
prettier-3.1.2 lib/prettier/rake/task.rb
prettier-3.1.1 lib/prettier/rake/task.rb
prettier-3.1.0 lib/prettier/rake/task.rb
prettier-3.0.0 lib/prettier/rake/task.rb