class Librarian::Manifest
Attributes
defined_dependencies[RW]
defined_version[RW]
extra[RW]
name[RW]
source[RW]
Public Class Methods
new(source, name, extra = nil)
click to toggle source
# File lib/librarian/manifest.rb, line 11 def initialize(source, name, extra = nil) assert_name_valid! name self.source = source self.name = name self.extra = extra end
Public Instance Methods
dependencies()
click to toggle source
# File lib/librarian/manifest.rb, line 45 def dependencies defined_dependencies || fetched_dependencies end
dependencies=(dependencies)
click to toggle source
# File lib/librarian/manifest.rb, line 49 def dependencies=(dependencies) self.defined_dependencies = _normalize_dependencies(dependencies) end
dependencies?()
click to toggle source
# File lib/librarian/manifest.rb, line 53 def dependencies? return unless defined_dependencies defined_dependencies.zip(fetched_dependencies).all? do |(a, b)| a.name == b.name && a.requirement == b.requirement end end
exclude_dependencies!(exclusions)
click to toggle source
Remove dependencies excluded, and return them
# File lib/librarian/manifest.rb, line 62 def exclude_dependencies!(exclusions) included, excluded = dependencies.partition { |d| !exclusions.include? d.name } self.dependencies = included excluded end
install!()
click to toggle source
# File lib/librarian/manifest.rb, line 72 def install! source.install!(self) end
latest()
click to toggle source
# File lib/librarian/manifest.rb, line 37 def latest @latest ||= source.manifests(name).first end
outdated?()
click to toggle source
# File lib/librarian/manifest.rb, line 41 def outdated? latest.version > version end
satisfies?(dependency)
click to toggle source
# File lib/librarian/manifest.rb, line 68 def satisfies?(dependency) dependency.requirement.satisfied_by?(version) end
to_s()
click to toggle source
# File lib/librarian/manifest.rb, line 19 def to_s "#{name}/#{version} <#{source}>" end
version()
click to toggle source
# File lib/librarian/manifest.rb, line 23 def version defined_version || fetched_version end
version=(version)
click to toggle source
# File lib/librarian/manifest.rb, line 27 def version=(version) self.defined_version = _normalize_version(version) end
version?()
click to toggle source
# File lib/librarian/manifest.rb, line 31 def version? return unless defined_version defined_version == fetched_version end
Private Instance Methods
_normalize_dependencies(dependencies)
click to toggle source
# File lib/librarian/manifest.rb, line 108 def _normalize_dependencies(dependencies) if Hash === dependencies dependencies = dependencies.map{|k, v| Dependency.new(k, v, nil)} end dependencies.sort_by(&:name) end
_normalize_version(version)
click to toggle source
# File lib/librarian/manifest.rb, line 104 def _normalize_version(version) Version.new(version) end
assert_name_valid!(name)
click to toggle source
# File lib/librarian/manifest.rb, line 115 def assert_name_valid!(name) name =~ /\A\S(?:.*\S)?\z/ and return raise ArgumentError, "name (#{name.inspect}) must be sensible" end
environment()
click to toggle source
# File lib/librarian/manifest.rb, line 80 def environment source.environment end
fetch_dependencies!()
click to toggle source
# File lib/librarian/manifest.rb, line 96 def fetch_dependencies! dependencies, duplicated = Dependency.remove_duplicate_dependencies(source.fetch_dependencies(name, version, extra)) duplicated.each do |name, dependencies_same_name| environment.logger.info { "Dependency '#{name}' duplicated for module #{self.name}, merging: #{dependencies_same_name.map{|d| d.to_s}}" } end dependencies end
fetch_version!()
click to toggle source
# File lib/librarian/manifest.rb, line 92 def fetch_version! source.fetch_version(name, extra) end
fetched_dependencies()
click to toggle source
# File lib/librarian/manifest.rb, line 88 def fetched_dependencies @fetched_dependencies ||= _normalize_dependencies(fetch_dependencies!) end
fetched_version()
click to toggle source
# File lib/librarian/manifest.rb, line 84 def fetched_version @fetched_version ||= _normalize_version(fetch_version!) end