class Omnibus::Manifest
Constants
- LATEST_MANIFEST_FORMAT
Attributes
build_git_revision[R]
build_version[R]
license[R]
Public Class Methods
from_file(filename)
click to toggle source
# File lib/omnibus/manifest.rb, line 134 def self.from_file(filename) data = File.read(File.expand_path(filename)) hash = FFI_Yajl::Parser.parse(data, symbolize_names: true) from_hash(hash) end
from_hash(manifest_data)
click to toggle source
Class Methods
# File lib/omnibus/manifest.rb, line 105 def self.from_hash(manifest_data) case manifest_data[:manifest_format].to_i when 1 from_hash_v1(manifest_data) when 2 from_hash_v2(manifest_data) else raise InvalidManifestFormat, "Unknown manifest format version: #{manifest_data[:manifest_format]}" end end
from_hash_v1(manifest_data)
click to toggle source
# File lib/omnibus/manifest.rb, line 116 def self.from_hash_v1(manifest_data) m = Omnibus::Manifest.new(manifest_data[:build_version], manifest_data[:build_git_revision]) manifest_data[:software].each do |name, entry_data| m.add(name, Omnibus::ManifestEntry.new(name, keys_to_syms(entry_data))) end m end
from_hash_v2(manifest_data)
click to toggle source
# File lib/omnibus/manifest.rb, line 124 def self.from_hash_v2(manifest_data) m = Omnibus::Manifest.new(manifest_data[:build_version], manifest_data[:build_git_revision], manifest_data[:license]) manifest_data[:software].each do |name, entry_data| m.add(name, Omnibus::ManifestEntry.new(name, keys_to_syms(entry_data))) end m end
keys_to_syms(h)
click to toggle source
Utility function to convert a Hash with String keys to a Hash with Symbol keys, recursively.
@returns [Hash]
# File lib/omnibus/manifest.rb, line 146 def self.keys_to_syms(h) h.inject({}) do |memo, (k, v)| memo[k.to_sym] = if v.is_a? Hash keys_to_syms(v) else v end memo end end
new(version = nil, git_rev = nil, license = "Unspecified")
click to toggle source
# File lib/omnibus/manifest.rb, line 30 def initialize(version = nil, git_rev = nil, license = "Unspecified") @data = {} @build_version = version @build_git_revision = git_rev @license = license end
Public Instance Methods
add(name, entry)
click to toggle source
# File lib/omnibus/manifest.rb, line 46 def add(name, entry) unless entry.is_a? Omnibus::ManifestEntry raise NotAManifestEntry, "#{entry} is not an Omnibus:ManifestEntry" end name_sym = name.to_sym if @data.key?(name_sym) log.warn(log_key) { "Overritting existing manifest entry for #{name}" } end @data[name_sym] = entry self end
each() { |entry| ... }
click to toggle source
# File lib/omnibus/manifest.rb, line 60 def each @data.each do |key, entry| yield entry end end
entry_for(name)
click to toggle source
# File lib/omnibus/manifest.rb, line 37 def entry_for(name) name_sym = name.to_sym if @data.key?(name_sym) @data[name_sym] else raise MissingManifestEntry, "No manifest entry found for #{name}" end end
entry_names()
click to toggle source
# File lib/omnibus/manifest.rb, line 66 def entry_names @data.keys end
to_hash()
click to toggle source
# File lib/omnibus/manifest.rb, line 70 def to_hash software_hash = @data.inject({}) do |memo, (k, v)| h = v.to_hash h[:locked_source].delete(:authorization) if h[:locked_source] memo[k] = h memo end build_system_metadata = Omnibus::BuildSystemMetadata.to_hash ret = { manifest_format: LATEST_MANIFEST_FORMAT, software: software_hash, } ret[:build_system_metadata] = build_system_metadata if build_system_metadata ret[:build_version] = build_version if build_version ret[:build_git_revision] = build_git_revision if build_git_revision ret[:license] = license ret end
to_json()
click to toggle source
The JSON representation of this build manifest.
@return [String]
# File lib/omnibus/manifest.rb, line 97 def to_json FFI_Yajl::Encoder.encode(to_hash, pretty: true) end