class Batali::Origin::Path
Fetch unit from local path
Public Class Methods
new(*_)
click to toggle source
Calls superclass method
Batali::Origin::new
# File lib/batali/origin/path.rb, line 32 def initialize(*_) super self.path = Utility.clean_path(path) self.identifier = Smash.new(:path => path).checksum unless name? self.name = identifier end end
Public Instance Methods
load_metadata()
click to toggle source
@return [Smash] metadata information
# File lib/batali/origin/path.rb, line 76 def load_metadata memoize(:metadata) do if File.exist?(json = File.join(path, "metadata.json")) MultiJson.load(File.read(json)).to_smash elsif File.exist?(rb = File.join(path, "metadata.rb")) struct = Metadata.new struct.set_state!(:value_collapse => true) struct.instance_eval(File.read(rb), rb, 1) struct._dump.to_smash else raise Errno::ENOENT.new("Failed to locate metadata file in cookbook directory! (path: #{path})") end end end
units()
click to toggle source
@return [Array<Unit>]
# File lib/batali/origin/path.rb, line 42 def units memoize(:units) do info = load_metadata if info[:depends] unless info[:depends].first.is_a?(Array) info[:depends] = [info[:depends]] end info[:depends] = info[:depends].map do |dep| case dep when String [dep, "> 0"] else dep.size == 1 ? dep.push("> 0") : dep end end end [ Unit.new( :name => info[:name], :version => info[:version], :dependencies => info.fetch(:depends, []), :source => Smash.new( :type => :path, :version => info[:version], :path => path, :dependencies => info.fetch(:depends, []), :cache_path => cache_path, ), ), ] end end