Sha256: 90bb85a03714a13052a0faec00eddad6d299cc7c371d7b779f526773a4be2676

Contents?: true

Size: 1.53 KB

Versions: 8

Compression:

Stored size: 1.53 KB

Contents

require File.join(File.dirname(__FILE__), "util")
require "cmdparse"
require "pathname"

module Juicer
  module Command
    # Displays a list of files that make up the dependency chain for the input
    # files/patterns.
    #
    class List < CmdParse::Command
      include Juicer::Command::Util

      # Initializes command
      #
      def initialize(io = STDOUT)
        super('list', false, true)
        @io = io
        self.short_desc = "Lists all dependencies for all input files/patterns"
        self.description = <<-EOF
Dependencies are looked up recursively. The dependency chain reveals which files
will be joined by juicer merge.

Input parameters may be:
  * Single file, ie $ juicer list myfile.css
  * Single glob pattern, ie $ juicer list **/*.css
  * Multiple mixed arguments, ie $ juicer list **/*.js **/*.css
        EOF
      end

      # Execute command
      #
      def execute(args)
        if args.length == 0
          raise ArgumentError.new('Please provide atleast one input file/pattern')
        end

        types = { :js => Juicer::Merger::JavaScriptDependencyResolver.new,
                  :css => Juicer::Merger::CssDependencyResolver.new }

        files(args).each do |file|
          type = file.split(".").pop.to_sym
          raise FileNotFoundError.new("Unable to guess type (CSS/JavaScript) of file #{relative(file)}") unless types[type]

          @io.puts "Dependency chain for #{relative file}:"
          @io.puts "  #{relative(types[type].resolve(file)).join("\n  ")}\n\n"
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
cjohansen-juicer-0.2.4 lib/juicer/command/list.rb
cjohansen-juicer-0.2.5 lib/juicer/command/list.rb
juicer-0.2.6 lib/juicer/command/list.rb
juicer-0.2.0 lib/juicer/command/list.rb
juicer-0.2.1 lib/juicer/command/list.rb
juicer-0.2.4 lib/juicer/command/list.rb
juicer-0.2.5 lib/juicer/command/list.rb
juicer-0.2.3 lib/juicer/command/list.rb