class Pannier::Package
Attributes
app[R]
input_assets[R]
input_path[R]
middlewares[R]
name[R]
output_assets[R]
output_path[R]
processors[R]
Public Class Methods
new(name, app)
click to toggle source
# File lib/pannier/package.rb, line 19 def initialize(name, app) @name, @app = name, app @input_assets, @output_assets = SortedSet.new, SortedSet.new @middlewares, @processors = [], [] end
Public Instance Methods
add_concatenator(concat_name, concatenator = Concatenator.new)
click to toggle source
# File lib/pannier/package.rb, line 60 def add_concatenator(concat_name, concatenator = Concatenator.new) @processors << [:concat!, concat_name, concatenator] end
add_input_assets(assets)
click to toggle source
# File lib/pannier/package.rb, line 48 def add_input_assets(assets) @input_assets.merge(assets) end
add_middleware(middleware, *args, &block)
click to toggle source
# File lib/pannier/mounted/package.rb, line 7 def add_middleware(middleware, *args, &block) @middlewares << proc { |app| middleware.new(app, *args, &block) } end
add_modifiers(modifiers)
click to toggle source
# File lib/pannier/package.rb, line 56 def add_modifiers(modifiers) @processors += modifiers.map { |m| [:modify!, m] } end
add_output_assets(assets)
click to toggle source
# File lib/pannier/package.rb, line 52 def add_output_assets(assets) @output_assets.merge(assets) end
assets(*patterns)
click to toggle source
# File lib/pannier/package.rb, line 136 def assets(*patterns) patterns.each do |pattern| paths = Dir[File.join(full_input_path, pattern)] assets = build_assets_from_paths(paths) add_input_assets(assets) end end
behave(*names)
click to toggle source
# File lib/pannier/package.rb, line 128 def behave(*names) names.each do |name| behavior = self.app.behaviors[name] raise MissingBehavior.new(name) if behavior.nil? self.instance_eval(&behavior) end end
build_assets_from_paths(paths)
click to toggle source
# File lib/pannier/package.rb, line 41 def build_assets_from_paths(paths) paths.map do |path| pathname = Pathname.new(path) Asset.new(pathname.basename.to_s, pathname.dirname.to_s, self) end end
build_handler_path(handler_path)
click to toggle source
# File lib/pannier/mounted/package.rb, line 19 def build_handler_path(handler_path) hp = handler_path || '/' hp.insert(0, '/') unless hp[0] == '/' hp end
clobber!()
click to toggle source
# File lib/pannier/package.rb, line 72 def clobber! copy! FileUtils.rm_f(@output_assets.map(&:path)) end
concat(*args)
click to toggle source
# File lib/pannier/package.rb, line 149 def concat(*args) add_concatenator(*args) end
concat!(concat_name, concatenator)
click to toggle source
# File lib/pannier/package.rb, line 93 def concat!(concat_name, concatenator) asset = Asset.new(concat_name, full_output_path, self) asset.content = concatenator.call(@output_assets.map(&:content)) @output_assets.replace([asset]) end
copy!()
click to toggle source
# File lib/pannier/package.rb, line 99 def copy! assets = @input_assets.map do |asset| asset.copy_to(full_output_path) end @output_assets.replace(assets) end
env()
click to toggle source
# File lib/pannier/package.rb, line 112 def env self.app.env end
env?(expression, &block)
click to toggle source
# File lib/pannier/package.rb, line 116 def env?(expression, &block) self.instance_eval(&block) if env.matches?(expression) end
full_input_path()
click to toggle source
# File lib/pannier/package.rb, line 33 def full_input_path File.expand_path(File.join(*[@app.input_path, @input_path].compact)) end
full_output_path()
click to toggle source
# File lib/pannier/package.rb, line 37 def full_output_path File.expand_path(File.join(*[@app.output_path, @output_path].compact)) end
handler()
click to toggle source
# File lib/pannier/mounted/package.rb, line 11 def handler handler_with_middlewares(output_assets.map(&:path), full_output_path) end
handler_path()
click to toggle source
# File lib/pannier/mounted/package.rb, line 15 def handler_path build_handler_path(output_path) end
handler_with_middlewares(paths, full_path)
click to toggle source
# File lib/pannier/mounted/package.rb, line 25 def handler_with_middlewares(paths, full_path) handler = FileHandler.new(paths, full_path) return handler if @middlewares.empty? @middlewares.reverse.reduce(handler) { |app, proc| proc.call(app) } end
input(path)
click to toggle source
# File lib/pannier/package.rb, line 120 def input(path) set_input(path) end
modify(*modifiers, &block)
click to toggle source
# File lib/pannier/package.rb, line 144 def modify(*modifiers, &block) modifiers << block if block_given? add_modifiers(modifiers) end
modify!(modifier)
click to toggle source
# File lib/pannier/package.rb, line 87 def modify!(modifier) @output_assets.each do |asset| asset.modify!(modifier) end end
output(path)
click to toggle source
# File lib/pannier/package.rb, line 124 def output(path) set_output(path) end
owns_any?(*paths)
click to toggle source
# File lib/pannier/package.rb, line 64 def owns_any?(*paths) @input_assets.any? { |a| paths.include?(a.path) } end
package_logger()
click to toggle source
# File lib/pannier/package.rb, line 68 def package_logger @package_logger ||= Logger::PackageLogger.new(@app.logger, self) end
process!()
click to toggle source
# File lib/pannier/package.rb, line 77 def process! package_logger.wrap do copy! !@processors.empty? && @processors.each do |instructions| send(*instructions) end write_files! end end
set_input(path)
click to toggle source
# File lib/pannier/package.rb, line 25 def set_input(path) @input_path = path end
set_output(path)
click to toggle source
# File lib/pannier/package.rb, line 29 def set_output(path) @output_path = path end
use(*args, &block)
click to toggle source
# File lib/pannier/mounted/package.rb, line 33 def use(*args, &block) add_middleware(*args, &block) end
write_files!()
click to toggle source
# File lib/pannier/package.rb, line 106 def write_files! @output_assets.each(&:write_file!) end