module Rip::Package

Constants

InvalidMetadata

Public Class Methods

load_file(metadata_path) click to toggle source
# File source/rip/package.rb, line 7
def self.load_file(metadata_path)
  details = Tomlrb.load_file(metadata_path, symbolize_keys: true)
  package_root = Pathname.new(metadata_path).dirname

  if details.key?(:license_file) && !Pathname.new(details[:license_file]).absolute?
    details = details.merge(license_file: package_root.join(details[:license_file]).to_s)
  end

  if details.key?(:executables)
    details[:executables][:_package_root] = package_root
  end

  if details.key?(:dependencies)
    details[:dependencies] = details[:dependencies].map do |name, options|
      case options
      when String
        [ name, { version: options } ]
      when Hash
        _options = options.key?(:path) ? options.merge(package_root: package_root) : options
        [ name, _options ]
      end
    end
  end

  begin
    Rip::Package::Metadata.new(details)
  rescue ArgumentError
    raise Rip::Package::InvalidMetadata, 'invalid package metadata'
  end
end
root() click to toggle source
# File source/rip/package.rb, line 38
def self.root
  Pathname.new(__dir__).parent.parent
end