Class: Librarian::Puppet::Source::Forge::Repo
- Includes:
- Util
- Defined in:
- lib/librarian/puppet/source/forge/repo.rb
Instance Attribute Summary
Attributes inherited from Repo
Instance Method Summary collapse
- #cache_version_unpacked!(version) ⇒ Object
-
#dependencies(version) ⇒ Object
return map with dependencies in the form => version,… version: Librarian::Manifest::Version.
-
#get_versions ⇒ Object
fetch list of versions ordered for newer to older.
- #install_version!(version, install_path) ⇒ Object
- #manifests ⇒ Object
-
#url(name, version) ⇒ Object
return the url for a specific version tarball version: Librarian::Manifest::Version.
- #vendor_cache(name, version) ⇒ Object
- #versions ⇒ Object
Methods included from Util
#clean_uri, #cp_r, #debug, #info, #module_name, #normalize_name, #rsync?, #warn
Methods inherited from Repo
#cache_path, #environment, #initialize, #vendored?, #vendored_path, #version_unpacked_cache_path
Constructor Details
This class inherits a constructor from Librarian::Puppet::Source::Repo
Instance Method Details
#cache_version_unpacked!(version) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/librarian/puppet/source/forge/repo.rb', line 70 def cache_version_unpacked!(version) path = version_unpacked_cache_path(version) return if path.directory? path.mkpath target = vendored?(name, version) ? vendored_path(name, version).to_s : name module_repository = source.uri.to_s command = %W[puppet module install --version #{version} --target-dir] command.push(path.to_s, '--module_repository', module_repository, '--modulepath', path.to_s, '--module_working_dir', path.to_s, '--ignore-dependencies', target) debug do "Executing puppet module install for #{name} #{version}: #{command.join(' ').gsub(module_repository, source.to_s)}" end begin Librarian::Posix.run!(command) rescue Posix::CommandFailure => e # Rollback the directory if the puppet module had an error begin path.unlink rescue StandardError => u debug("Unable to rollback path #{path}: #{u}") end tar = Dir[File.join(path.to_s, '**/*.tar.gz')] msg = '' if e. =~ /Unexpected EOF in archive/ and !tar.empty? file = tar.first msg = " (looks like an incomplete download of #{file})" end raise Error, "Error executing puppet module install#{msg}. Check that this command succeeds:\n#{command.join(' ')}\nError:\n#{e.message}" end end |
#dependencies(version) ⇒ Object
return map with dependencies in the form => version,… version: Librarian::Manifest::Version
34 35 36 |
# File 'lib/librarian/puppet/source/forge/repo.rb', line 34 def dependencies(version) # implement in subclasses end |
#get_versions ⇒ Object
fetch list of versions ordered for newer to older
28 29 30 |
# File 'lib/librarian/puppet/source/forge/repo.rb', line 28 def get_versions # implement in subclasses end |
#install_version!(version, install_path) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/librarian/puppet/source/forge/repo.rb', line 50 def install_version!(version, install_path) if environment.local? && !vendored?(name, version) raise Error, "Could not find a local copy of #{name} at #{version}." end vendor_cache(name, version) if environment.vendor? && !vendored?(name, version) cache_version_unpacked! version install_path.rmtree if install_path.exist? && rsync? != true unpacked_path = version_unpacked_cache_path(version).join(module_name(name)) unless unpacked_path.exist? raise Error, "#{unpacked_path} does not exist, something went wrong. Try removing it manually" end cp_r(unpacked_path, install_path) end |
#manifests ⇒ Object
44 45 46 47 48 |
# File 'lib/librarian/puppet/source/forge/repo.rb', line 44 def manifests versions.map do |version| Manifest.new(source, name, version) end end |
#url(name, version) ⇒ Object
return the url for a specific version tarball version: Librarian::Manifest::Version
40 41 42 |
# File 'lib/librarian/puppet/source/forge/repo.rb', line 40 def url(name, version) # implement in subclasses end |
#vendor_cache(name, version) ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/librarian/puppet/source/forge/repo.rb', line 108 def vendor_cache(name, version) url = url(name, version) path = vendored_path(name, version).to_s debug { "Downloading #{url} into #{path}" } environment.vendor! File.open(path, 'wb') do |f| URI.open(url, 'rb') do |input| f.write(input.read) end end end |
#versions ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/librarian/puppet/source/forge/repo.rb', line 15 def versions return @versions if @versions @versions = get_versions if @versions.empty? info { "No versions found for module #{name}" } else debug { " Module #{name} found versions: #{@versions.join(', ')}" } end @versions end |