Module: PDK::Template::Fetcher

Defined in:
lib/pdk/template/fetcher.rb,
lib/pdk/template/fetcher/git.rb,
lib/pdk/template/fetcher/local.rb

Defined Under Namespace

Classes: AbstractFetcher, Git, Local

Class Method Summary collapse

Class Method Details

.instance(uri, options = {}) ⇒ PDK::Template::Fetcher::AbstractTemplateFetcher

Returns a Template Fetcher implementation for the given Template URI



14
15
16
17
18
# File 'lib/pdk/template/fetcher.rb', line 14

def self.instance(uri, options = {})
  return Git.new(uri, options) if Git.fetchable?(uri, options)

  Local.new(uri, options)
end

.with(uri, options = {}) {|fetcher| ... } ⇒ void

This method returns an undefined value.

Creates an instance of a PDK::Template::Fetcher::AbstractTemplateFetcher object with the path or URL to the template and the block of code to run to be run while the template is fetched.

The fetched directory is only guaranteed to be available on disk within the scope of the block passed to this method.

Examples:

Using a git repository as a template

PDK::Template::Fetcher.with('https://github.com/puppetlabs/pdk-templates') do |fetcher|
end

Yield Parameters:

  • fetcher (PDK::Template::Fetcher::AbstractTemplateFetcher)

    The initialised fetcher with the template already fetched

Raises:

  • (ArgumentError)

    If no block is given to this method.



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/pdk/template/fetcher.rb', line 38

def self.with(uri, options = {})
  raise ArgumentError, format('%{class_name}.with must be passed a block.', class_name: name) unless block_given?

  fetcher = instance(uri, options)

  begin
    fetcher.fetch!
    yield fetcher
  ensure
    # If the the path is temporary, clean it up
    PDK::Util::Filesystem.rm_rf(fetcher.path) if fetcher.temporary
  end
  nil
end