Sha256: 6bea4bfcd33e5f1375dc3b1eeb541127c976e5f913568d23fe973ca5ffb971c0

Contents?: true

Size: 1.67 KB

Versions: 32

Compression:

Stored size: 1.67 KB

Contents

require "juicer/command/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(log = nil)
        super('list', false, true)
        @log = log
        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::JavaScriptDependencyResolver.new,
                  :css => Juicer::CssDependencyResolver.new }

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

          deps = relative types[type].resolve(file)
          # there may only be one dependency, which resolve() returns as a string
          deps = deps.join("\n  ") if deps.is_a? Array

          "Dependency chain for #{relative file}:\n  #{deps}"
        }.join("\n\n") + "\n"

        @log.info result

        result
      end
    end
  end
end

Version data entries

32 entries across 32 versions & 3 rubygems

Version Path
juicer-1.2.0 lib/juicer/command/list.rb
juicer-1.1.2 lib/juicer/command/list.rb
juicer-1.1.1 lib/juicer/command/list.rb
juicer-1.1.0 lib/juicer/command/list.rb
juicer-1.0.22 lib/juicer/command/list.rb
juicer-1.0.21 lib/juicer/command/list.rb
juicer-1.0.20 lib/juicer/command/list.rb
juicer-1.0.19 lib/juicer/command/list.rb
juicer-1.0.18 lib/juicer/command/list.rb
juicer-1.0.17 lib/juicer/command/list.rb
juicer-1.0.16 lib/juicer/command/list.rb
juicer-1.0.15 lib/juicer/command/list.rb
juicer-1.0.14 lib/juicer/command/list.rb
juicer-1.0.13 lib/juicer/command/list.rb
psyho_juicer-1.0.11 lib/juicer/command/list.rb
juicer-1.0.12 lib/juicer/command/list.rb
juicer-1.0.11 lib/juicer/command/list.rb
juicer-1.0.10 lib/juicer/command/list.rb
psyho_juicer-1.0.9 lib/juicer/command/list.rb
juicer-1.0.9 lib/juicer/command/list.rb