Module: Molinillo::Delegates::SpecificationProvider

Included in:
Resolver::Resolution, VersionConflict
Defined in:
lib/molinillo/delegates/specification_provider.rb

Overview

Delegates all SpecificationProvider methods to a ‘#specification_provider` property.

Instance Method Summary collapse

Instance Method Details

#allow_missing?(dependency) ⇒ Boolean

Returns whether this dependency, which has no possible matching specifications, can safely be ignored.

Parameters:

  • dependency (Object)

Returns:

  • (Boolean)

    whether this dependency can safely be skipped.



65
66
67
68
69
# File 'lib/molinillo/delegates/specification_provider.rb', line 65

def allow_missing?(dependency)
  with_no_such_dependency_error_handling do
    specification_provider.allow_missing?(dependency)
  end
end

#dependencies_equal?(dependencies, other_dependencies) ⇒ Boolean

Determines whether two arrays of dependencies are equal, and thus can be grouped.

Parameters:

  • dependencies (Array<Object>)
  • other_dependencies (Array<Object>)

Returns:

  • (Boolean)

    whether ‘dependencies` and `other_dependencies` should be considered equal.



30
31
32
33
34
# File 'lib/molinillo/delegates/specification_provider.rb', line 30

def dependencies_equal?(dependencies, other_dependencies)
  with_no_such_dependency_error_handling do
    specification_provider.dependencies_equal?(dependencies, other_dependencies)
  end
end

#dependencies_for(specification) ⇒ Array<Object>

Note:

This method should be ‘pure’, i.e. the return value should depend only on the ‘specification` parameter.

Returns the dependencies of ‘specification`.

Parameters:

  • specification (Object)

Returns:

  • (Array<Object>)

    the dependencies that are required by the given ‘specification`.



16
17
18
19
20
# File 'lib/molinillo/delegates/specification_provider.rb', line 16

def dependencies_for(specification)
  with_no_such_dependency_error_handling do
    specification_provider.dependencies_for(specification)
  end
end

#name_for(dependency) ⇒ String

Note:

This method should be ‘pure’, i.e. the return value should depend only on the ‘dependency` parameter.

Returns the name for the given ‘dependency`.

Parameters:

  • dependency (Object)

Returns:

  • (String)

    the name for the given ‘dependency`.



37
38
39
40
41
# File 'lib/molinillo/delegates/specification_provider.rb', line 37

def name_for(dependency)
  with_no_such_dependency_error_handling do
    specification_provider.name_for(dependency)
  end
end

#name_for_explicit_dependency_sourceString

Returns the name of the source of explicit dependencies, i.e. those passed to Resolver#resolve directly.

Returns:

  • (String)

    the name of the source of explicit dependencies, i.e. those passed to Resolver#resolve directly.



44
45
46
47
48
# File 'lib/molinillo/delegates/specification_provider.rb', line 44

def name_for_explicit_dependency_source
  with_no_such_dependency_error_handling do
    specification_provider.name_for_explicit_dependency_source
  end
end

#name_for_locking_dependency_sourceString

Returns the name of the source of ‘locked’ dependencies, i.e. those passed to Resolver#resolve directly as the ‘base`.

Returns:

  • (String)

    the name of the source of ‘locked’ dependencies, i.e. those passed to Resolver#resolve directly as the ‘base`



51
52
53
54
55
# File 'lib/molinillo/delegates/specification_provider.rb', line 51

def name_for_locking_dependency_source
  with_no_such_dependency_error_handling do
    specification_provider.name_for_locking_dependency_source
  end
end

#requirement_satisfied_by?(requirement, activated, spec) ⇒ Boolean

Determines whether the given ‘requirement` is satisfied by the given `spec`, in the context of the current `activated` dependency graph.

Parameters:

  • requirement (Object)
  • activated (DependencyGraph)

    the current dependency graph in the resolution process.

  • spec (Object)

Returns:

  • (Boolean)

    whether ‘requirement` is satisfied by `spec` in the context of the current `activated` dependency graph.



23
24
25
26
27
# File 'lib/molinillo/delegates/specification_provider.rb', line 23

def requirement_satisfied_by?(requirement, activated, spec)
  with_no_such_dependency_error_handling do
    specification_provider.requirement_satisfied_by?(requirement, activated, spec)
  end
end

#search_for(dependency) ⇒ Array<Object>

Note:

This method should be ‘pure’, i.e. the return value should depend only on the ‘dependency` parameter.

Search for the specifications that match the given dependency. The specifications in the returned array will be considered in reverse order, so the latest version ought to be last.

Parameters:

  • dependency (Object)

Returns:

  • (Array<Object>)

    the specifications that satisfy the given ‘dependency`.



9
10
11
12
13
# File 'lib/molinillo/delegates/specification_provider.rb', line 9

def search_for(dependency)
  with_no_such_dependency_error_handling do
    specification_provider.search_for(dependency)
  end
end

#sort_dependencies(dependencies, activated, conflicts) ⇒ Array<Object>

Sort dependencies so that the ones that are easiest to resolve are first. Easiest to resolve is (usually) defined by:

1) Is this dependency already activated?
2) How relaxed are the requirements?
3) Are there any conflicts for this dependency?
4) How many possibilities are there to satisfy this dependency?

Parameters:

  • dependencies (Array<Object>)
  • activated (DependencyGraph)

    the current dependency graph in the resolution process.

  • conflicts ({String => Array<Conflict>})

Returns:

  • (Array<Object>)

    a sorted copy of ‘dependencies`.



58
59
60
61
62
# File 'lib/molinillo/delegates/specification_provider.rb', line 58

def sort_dependencies(dependencies, activated, conflicts)
  with_no_such_dependency_error_handling do
    specification_provider.sort_dependencies(dependencies, activated, conflicts)
  end
end