class Cany::Dependency

This class representing a dependency on an abstract object like a gem or a external software.

Depending on the platform different packages are needed to satisfy the dependency. This class stores which packages (and optional a version constraint) is needed for every platform, distribution or distribution release.

This class differs between two different situation where dependencies are needed: to build the package (:build) or to run/use the packages (:runtime).

A dependency has also a priority:

- :required: The dependency have to be fulfilled in every situation otherwise it is not
  possible to build or run the application.

Other priorities are planed but currently not implemented.

Attributes

default[R]
distro_releases[R]
distros[R]
situations[R]

Public Class Methods

new(opts={}) click to toggle source
# File lib/cany/dependency.rb, line 16
def initialize(opts={})
  opts = { situations: [:runtime] }.merge opts
  @default = []
  @distros = Cany.hash_with_array_as_default
  @distro_releases ||= Cany.hash_with_array_as_default
  self.situations = opts[:situations]
end

Public Instance Methods

build?() click to toggle source
# File lib/cany/dependency.rb, line 29
def build?; @situations.include? :build; end
define_default(name, version=nil) click to toggle source

Define the default package name and an optional version constraint for all @param name A package name @param version[String, nil] A version constraint

# File lib/cany/dependency.rb, line 34
def define_default(name, version=nil)
  default << [name, version]
end
define_on_distro(distro, name, version=nil) click to toggle source

Define the default package name and an optional version constraint for a distribution @param distro The distribution name like :ubuntu, :debian … @param name A package name @param version[String, nil] A version constraint

# File lib/cany/dependency.rb, line 42
def define_on_distro(distro, name, version=nil)
  distros[distro] << [name, version]
end
define_on_distro_release(distro, release, name, version=nil) click to toggle source

Define the package name and an optional version constraint for a distribution release @param distro The distribution name like :ubuntu, :debian … @param release The distribution release like :precise for ubuntu 12.04 @param name A package name @param version[String, nil] A version constraint

# File lib/cany/dependency.rb, line 51
def define_on_distro_release(distro, release, name, version=nil)
  distro_releases[[distro, release]] << [name, version]
end
determine(distro, release) click to toggle source

Evaluation which packages (with version constraint) are needed for the given distrobution release. @param distro The distribution name like :ubuntu, :debian … @param release The distribution release like :precise for ubuntu 12.04 @return [Array<String, String>]

# File lib/cany/dependency.rb, line 60
def determine(distro, release)
  return distro_releases[[distro, release]] if distro_releases.has_key? [distro, release]
  return distros[distro] if distros.has_key? distro
  default
end
runtime?() click to toggle source
# File lib/cany/dependency.rb, line 28
def runtime?; @situations.include? :runtime; end
situations=(value) click to toggle source
# File lib/cany/dependency.rb, line 25
def situations=(value)
  @situations = value.kind_of?(Array) ? value : [value]
end