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
Usage:
forge = PuppetLibrary::Forge::Directory.configure do
# The path to serve the modules from
path "/var/modules/cache"
end
Class Method Summary collapse
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
Methods inherited from Forge
Methods included from Util::Logging
#debug, #info, #logger, #logs, #warn
Constructor Details
#initialize(module_dir) ⇒ Directory
-
:module_dir- The directory containing the packaged modules.
53 54 55 56 |
# File 'lib/puppet_library/forge/directory.rb', line 53 def initialize(module_dir) super(self) @module_dir = module_dir end |
Class Method Details
.configure(&block) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/puppet_library/forge/directory.rb', line 40 def self.configure(&block) config_api = PuppetLibrary::Util::ConfigApi.for(Directory) do required :path, "path to a directory to serve modules from" do |dir| Dir.new(File.(dir)).tap do |dir| raise "Module directory '#{dir}' isn't readable" unless File.executable? dir end end end config = config_api.configure(&block) Directory.new(config.get_path) end |
Instance Method Details
#get_all_metadata ⇒ Object
68 69 70 |
# File 'lib/puppet_library/forge/directory.rb', line 68 def ("*", "*") end |
#get_metadata(author, module_name) ⇒ Object
72 73 74 75 |
# File 'lib/puppet_library/forge/directory.rb', line 72 def (, module_name) archives = Dir["#{@module_dir.path}/**/#{}-#{module_name}-*.tar.gz"] archives.map {|path| (path) }.compact end |
#get_module(author, name, version) ⇒ Object
58 59 60 61 62 63 64 65 66 |
# File 'lib/puppet_library/forge/directory.rb', line 58 def get_module(, name, version) file_name = "#{}-#{name}-#{version}.tar.gz" path = File.join(File.(@module_dir.path), file_name) if File.exist? path File.open(path, 'r') else nil end end |