# File lib/compass/installers/manifest.rb, line 23 def self.known_extensions @known_extensions ||= {} end
# File lib/compass/installers/manifest.rb, line 15 def initialize(manifest_file = nil, options = {}) @entries = [] @options = options @generate_config = true @compile_after_generation = true parse(manifest_file) if manifest_file end
# File lib/compass/installers/manifest.rb, line 27 def self.plural_types @plural_types ||= {} end
# File lib/compass/installers/manifest.rb, line 31 def self.type(t, options = {}) Array(options[:extensions]).each do |ext| self.known_extensions[ext] = t end self.plural_types[options[:plural]] = t if options[:plural] eval <<-END def #{t}(from, options = {}) @entries << Entry.new(:#{t}, from, options) end def has_#{t}? @entries.detect {|e| e.type == :#{t}} end def each_#{t} @entries.select {|e| e.type == :#{t}}.each {|e| yield e} end END end
# File lib/compass/installers/manifest.rb, line 119 def compile? @compile_after_generation end
# File lib/compass/installers/manifest.rb, line 102 def description(value = nil) if value @description = value else @description end end
# File lib/compass/installers/manifest.rb, line 57 def discover(type) type = self.class.plural_types[type] || type dir = File.dirname(@manifest_file) Dir.glob("#{dir}/**/*").each do |file| next if /manifest\.rb/ =~ file short_name = file[(dir.length+1)..-1] options = {} ext = if File.extname(short_name) == ".erb" options[:erb] = true File.extname(short_name[0..-5]) else File.extname(short_name) end[1..-1] file_type = self.class.known_extensions[ext] file_type = :file if file_type.nil? file_type = :directory if File.directory?(file) if type == :all || type == file_type send(file_type, short_name, options) end end end
Enumerates over the manifest files
# File lib/compass/installers/manifest.rb, line 111 def each @entries.each {|e| yield e} end
# File lib/compass/installers/manifest.rb, line 115 def generate_config? @generate_config end
# File lib/compass/installers/manifest.rb, line 79 def help(value = nil) if value @help = value else @help end end
# File lib/compass/installers/manifest.rb, line 89 def welcome_message(value = nil, options = {}) if value @welcome_message = value @welcome_message_options = options else @welcome_message end end
# File lib/compass/installers/manifest.rb, line 155 def instance_binding binding end
# File lib/compass/installers/manifest.rb, line 125 def no_configuration_file! @generate_config = false end
parses a manifest file which is a ruby script evaluated in a Manifest instance context
# File lib/compass/installers/manifest.rb, line 142 def parse(manifest_file) with_manifest(manifest_file) do if File.exists?(manifest_file) open(manifest_file) do |f| eval(f.read, instance_binding, manifest_file) end else eval("discover :all", instance_binding, manifest_file) end end end
# File lib/compass/installers/manifest.rb, line 129 def skip_compilation! @compile_after_generation = false end
# File lib/compass/installers/manifest.rb, line 133 def with_manifest(manifest_file) @manifest_file = manifest_file yield ensure @manifest_file = nil end