Class: PuppetLibrary::Forge::Directory
- Defined in:
- lib/puppet_library/forge/directory.rb
Overview
A forge that serves modules from a directory on disk.
Note:
-
The modules must be packaged in
.tar.gzformat -
The modules must be named in the format
author-modulename-version.tar.gz -
The modules must contain a
metadata.jsonfile
That is, the format must be the same as what is produced by puppet module build
Instance Method Summary collapse
- #get_all_metadata ⇒ Object
- #get_metadata(author = "*", module_name = "") ⇒ Object
- #get_module(author, name, version) ⇒ Object
-
#initialize(module_dir) ⇒ Directory
constructor
-
:module_dir- The directory containing the packaged modules.
-
Methods inherited from Abstract
#collect_dependencies_versions, #get_module_buffer, #get_module_metadata, #get_module_metadata_with_dependencies, #retrieve_all_metadata, #retrieve_metadata, #search_modules
Constructor Details
#initialize(module_dir) ⇒ Directory
-
:module_dir- The directory containing the packaged modules.
33 34 35 36 37 38 |
# File 'lib/puppet_library/forge/directory.rb', line 33 def initialize(module_dir) super(self) raise "Module directory '#{module_dir}' doesn't exist" unless File.directory? module_dir raise "Module directory '#{module_dir}' isn't readable" unless File.executable? module_dir @module_dir = module_dir end |
Instance Method Details
#get_all_metadata ⇒ Object
58 59 60 |
# File 'lib/puppet_library/forge/directory.rb', line 58 def end |
#get_metadata(author = "*", module_name = "") ⇒ Object
50 51 52 53 54 55 56 |
# File 'lib/puppet_library/forge/directory.rb', line 50 def ( = "*", module_name = "") Dir["#{@module_dir}/#{author}-#{module_name}*"].map do |module_path| archive = PuppetLibrary::Archive::ArchiveReader.new(module_path) = archive.read_entry %r[[^/]+/metadata\.json$] JSON.parse() end end |
#get_module(author, name, version) ⇒ Object
40 41 42 43 44 45 46 47 48 |
# File 'lib/puppet_library/forge/directory.rb', line 40 def get_module(, name, version) file_name = "#{author}-#{name}-#{version}.tar.gz" path = File.join(File.(@module_dir), file_name) if File.exist? path File.open(path, 'r') else nil end end |