Sha256: 1e1cf9afbb3fa8ffedc6903024ed6e30c2f81d6f9e121076ecf950f3c94a9d0a

Contents?: true

Size: 1.72 KB

Versions: 15

Compression:

Stored size: 1.72 KB

Contents

# frozen_string_literal: true

module Jets
  module Command
    class RakeCommand < Base # :nodoc:
      extend Jets::Command::Actions

      namespace "rake"

      class << self
        def printing_commands
          formatted_rake_tasks.map(&:first)
        end

        def perform(task, args, config)
          Jets.boot
          require_rake
          # Wonder if there's a better way to do this.
          # We do not use the rask_task block to require dummy/rails
          # because don't want Rails const to be defined for other rake tasks
          # like jets:assets:precompile. We want the Rails const to be defined
          # lazily at runtime only for db rake tasks.
          require "jets/overrides/dummy/rails" if task.include?("db:")

          Rake.with_application do |rake|
            rake.init("jets", [task, *args])
            rake.load_rakefile
            if Jets.respond_to?(:root)
              rake.options.suppress_backtrace_pattern = /\A(?!#{Regexp.quote(Jets.root.to_s)})/
            end
            rake.standard_exception_handling { rake.top_level }
          end
        end

        private
          def rake_tasks
            require_rake

            return @rake_tasks if defined?(@rake_tasks)

            require_application!

            Rake::TaskManager.record_task_metadata = true
            Rake.application.instance_variable_set(:@name, "jets")
            load_tasks
            @rake_tasks = Rake.application.tasks.select(&:comment)
          end

          def formatted_rake_tasks
            rake_tasks.map { |t| [ t.name_with_args, t.comment ] }
          end

          def require_rake
            require "rake" # Defer booting Rake until we know it's needed.
          end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
jets-5.0.13 lib/jets/commands/rake/rake_command.rb
jets-5.0.12 lib/jets/commands/rake/rake_command.rb
jets-5.0.11 lib/jets/commands/rake/rake_command.rb
jets-5.0.10 lib/jets/commands/rake/rake_command.rb
jets-5.0.9 lib/jets/commands/rake/rake_command.rb
jets-5.0.8 lib/jets/commands/rake/rake_command.rb
jets-5.0.7 lib/jets/commands/rake/rake_command.rb
jets-5.0.6 lib/jets/commands/rake/rake_command.rb
jets-5.0.5 lib/jets/commands/rake/rake_command.rb
jets-5.0.4 lib/jets/commands/rake/rake_command.rb
jets-5.0.3 lib/jets/commands/rake/rake_command.rb
jets-5.0.2 lib/jets/commands/rake/rake_command.rb
jets-5.0.1 lib/jets/commands/rake/rake_command.rb
jets-5.0.0 lib/jets/commands/rake/rake_command.rb
jets-5.0.0.beta1 lib/jets/commands/rake/rake_command.rb