class Rip::Package::Metadata

Attributes

authors[R]
dependencies[R]
description[R]
executables[R]
extra[R]
homepage[R]
license[R]
name[R]
version[R]

Public Class Methods

new(author: nil, authors: nil, dependencies: {}, description: nil, executables: {}, homepage: nil, license: nil, license_file: nil, extra: nil, name:, version:) click to toggle source
# File source/rip/package/metadata.rb, line 15
def initialize(author: nil, authors: nil, dependencies: {}, description: nil, executables: {}, homepage: nil, license: nil, license_file: nil, extra: nil, name:, version:)
  raise Rip::Package::InvalidMetadata, 'an author is required' if author.nil? && authors.nil?
  raise Rip::Package::InvalidMetadata, 'must use `[[authors]]` when specifying more than one author' if author && authors
  @authors = Rip::Package::Author.extract(author ? [ author ] : authors)

  @dependencies = Rip::Package::Dependency.extract(dependencies)

  @description = description

  @executables = Rip::Package::Executable.extract(executables)

  @homepage = URI.parse(homepage) if homepage

  raise Rip::Package::InvalidMetadata, 'a license is required' if license.nil? && license_file.nil?
  raise Rip::Package::InvalidMetadata, 'must specify a single license' if license && license_file
  @license = if license_file
    Rip::Package::License.extract(Pathname.new(license_file).expand_path)
  else
    Rip::Package::License.extract(license)
  end

  @extra = Hashie::Mash.new(extra) if extra

  raise Rip::Package::InvalidMetadata, '`name` must follow the rules for references' unless /\A[a-zA-Z_]+\z/ =~ name
  @name = name

  @version = Rip::Package::Version.extract(version)
end