Sha256: 0e514f0b7c30a419daa7af2f22d33373a48c1729e39d7675354694d59d0b9281

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

require 'pathname'
require 'fileutils'
require 'dassets/asset_file'
require 'dassets/digests_file'

module Dassets; end
class Dassets::Runner; end
class Dassets::Runner::CacheCommand

  attr_reader :files_root_path, :cache_root_path, :digests_file, :asset_files

  def initialize(cache_root_path)
    unless cache_root_path && File.directory?(cache_root_path)
      raise Dassets::Runner::CmdError, "specify an existing cache directory"
    end

    @files_root_path = Pathname.new(Dassets.config.files_path)
    @cache_root_path = Pathname.new(cache_root_path)
    @digests_file = Dassets::DigestsFile.new(Dassets.config.digests_file_path)
    @asset_files = @digests_file.asset_files
  end

  def run(write_files=true)
    begin
      @asset_files.each do |file|
        files_path = @files_root_path.join(file.path).to_s
        cache_path = @cache_root_path.join(file.cache_path).to_s

        if write_files
          FileUtils.mkdir_p File.dirname(cache_path)
          FileUtils.cp(files_path, cache_path)
        end
      end
      unless ENV['DASSETS_TEST_MODE']
        $stdout.puts "#{@asset_files.size} files written to #{@cache_root_path}"
      end
      return write_files
    rescue Exception => e
      unless ENV['DASSETS_TEST_MODE']
        $stderr.puts e, *e.backtrace; $stderr.puts ""
      end
      raise Dassets::Runner::CmdFail
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dassets-0.2.0 lib/dassets/runner/cache_command.rb
dassets-0.1.0 lib/dassets/runner/cache_command.rb