50 lines · 1.3 KB · Text
RawDownload
class AssetsCLI < Thor  def self.to_s    'Assets'  end   def initialize(*args)    ENV['RACK_ENV'] = 'production'    require 'app'    super  end   desc 'compile [--clean] [--keep=<n>] [--verbose]', 'Compile all assets'  option :clean, type: :boolean, desc: 'Clean old assets after compilation'  option :keep, type: :numeric, default: 0, desc: 'Number of old assets to keep'  option :verbose, type: :boolean  def compile    load 'tasks/sprites.thor'    invoke 'sprites:generate', [], :remove_public_icons => true, :verbose => options[:verbose]     manifest.compile App.assets_compile    manifest.clean(options[:keep]) if options[:clean]  end   desc 'clean [--keep=<n>] [--verbose]', 'Clean old assets'  option :keep, type: :numeric, default: 0, desc: 'Number of old assets to keep'  option :verbose, type: :boolean  def clean    manifest.clean(options[:keep])  end   private   def sprockets    @sprockets ||= App.sprockets.tap do |sprockets|      sprockets.logger = logger      sprockets.cache = nil    end  end   def manifest    @manifest ||= Sprockets::Manifest.new sprockets.index, App.assets_manifest_path  end   def logger    @logger ||= Logger.new($stdout).tap do |logger|      logger.level = options[:verbose] ? Logger::DEBUG : Logger::INFO      logger.formatter = proc { |severity, datetime, progname, msg| "#{msg}\n" }    end  endend