lib/pdk/template/renderer/v1/renderer.rb in pdk-2.3.0 vs lib/pdk/template/renderer/v1/renderer.rb in pdk-2.4.0
- old
+ new
@@ -1,132 +1,132 @@
-require 'pdk'
-require 'pdk/template/renderer'
-
-module PDK
- module Template
- module Renderer
- module V1
- class Renderer < PDK::Template::Renderer::AbstractRenderer
- # @see PDK::Template::Renderer::AbstractRenderer.render
- def render(template_type, _name, options = {})
- render_module(options) { |*args| yield(*args) } if template_type == PDK::Template::MODULE_TEMPLATE_TYPE
- end
-
- # @see PDK::Template::Renderer::AbstractRenderer.has_single_item?
- def has_single_item?(item_path) # rubocop:disable Naming/PredicateName
- PDK::Util::Filesystem.exist?(single_item_path(item_path))
- end
-
- # @see PDK::Template::Renderer::AbstractRenderer.render_single_item
- def render_single_item(relative_file_path, template_data_hash)
- template_file = single_item_path(relative_file_path)
- return nil unless PDK::Util::Filesystem.file?(template_file) && PDK::Util::Filesystem.readable?(template_file)
-
- PDK.logger.debug(_("Rendering '%{template}'...") % { template: template_file })
- new_template_file(template_file, template_data_hash).render
- end
-
- # Returns the full path for a single item
- #
- # @param item_path [String] The path of the single item to render
- # @return [String]
- # @api private
- #:nocov:
- def single_item_path(item_path)
- File.join(template_root, 'object_templates', item_path)
- end
- #:nocov:
-
- # Helper method used during testing
- #:nocov:
- # @api private
- def new_template_file(template_file, template_data_hash)
- TemplateFile.new(template_file, template_data_hash)
- end
- #:nocov:
-
- # Helper method used during testing
- #:nocov:
- # @api private
- def new_legacy_template_dir(context, uri, path, module_metadata = {})
- LegacyTemplateDir.new(context, uri, path, module_metadata)
- end
- #:nocov:
-
- # Renders a new module
- #
- # @param options [Hash{Object => Object}] A list of options to pass through to the renderer. See PDK::Template::TemplateDir helper methods for other options
- # @see #render
- # @api private
- #:nocov: This is tested in acceptance and packaging tests
- def render_module(options = {})
- require 'pdk/template/renderer/v1/template_file'
-
- moduleroot_dir = File.join(template_root, 'moduleroot')
- moduleroot_init = File.join(template_root, 'moduleroot_init')
-
- dirs = [moduleroot_dir]
- dirs << moduleroot_init if options[:include_first_time]
-
- legacy_template_dir = new_legacy_template_dir(context, template_uri, template_root, options[:module_metadata] || {})
-
- files_in_template(dirs).each do |template_file, template_loc|
- template_file = template_file.to_s
- PDK.logger.debug(_("Rendering '%{template}'...") % { template: template_file })
- dest_path = template_file.sub(%r{\.erb\Z}, '')
- config = legacy_template_dir.config_for(dest_path)
-
- dest_status = if template_loc.start_with?(moduleroot_init)
- :init
- else
- :manage
- end
-
- if config['unmanaged']
- dest_status = :unmanage
- elsif config['delete']
- dest_status = :delete
- else
- begin
- dest_content = new_template_file(File.join(template_loc, template_file), configs: config, template_dir: legacy_template_dir).render
- rescue => error
- error_msg = _(
- "Failed to render template '%{template}'\n" \
- '%{exception}: %{message}',
- ) % { template: template_file, exception: error.class, message: error.message }
- raise PDK::CLI::FatalError, error_msg
- end
- end
-
- yield dest_path, dest_content, dest_status
- end
- end
- #:nocov:
-
- # Returns all files in the given template directories
- #
- # @param dirs [Array[String]] Directories to search in
- # @param glob_suffix [Array[String]] File glob to use when searching for files. Defaults to ['**', '*']
- #
- # @return [Hash{String => String}] Key is the template file relative path and the value is the absolute path to the template directory
- # @api private
- def files_in_template(dirs, glob_suffix = ['**', '*'])
- temp_paths = []
- dirlocs = []
- dirs.each do |dir|
- raise ArgumentError, _("The directory '%{dir}' doesn't exist") % { dir: dir } unless PDK::Util::Filesystem.directory?(dir)
- temp_paths += PDK::Util::Filesystem.glob(File.join(dir, *glob_suffix), File::FNM_DOTMATCH).select do |template_path|
- if PDK::Util::Filesystem.file?(template_path) && !PDK::Util::Filesystem.symlink?(template_path)
- dirlocs << dir
- end
- end
- temp_paths.map do |template_path|
- template_path.sub!(%r{\A#{Regexp.escape(dir)}#{Regexp.escape(File::SEPARATOR)}}, '')
- end
- end
- Hash[temp_paths.zip dirlocs]
- end
- end
- end
- end
- end
-end
+require 'pdk'
+require 'pdk/template/renderer'
+
+module PDK
+ module Template
+ module Renderer
+ module V1
+ class Renderer < PDK::Template::Renderer::AbstractRenderer
+ # @see PDK::Template::Renderer::AbstractRenderer.render
+ def render(template_type, _name, options = {})
+ render_module(options) { |*args| yield(*args) } if template_type == PDK::Template::MODULE_TEMPLATE_TYPE
+ end
+
+ # @see PDK::Template::Renderer::AbstractRenderer.has_single_item?
+ def has_single_item?(item_path) # rubocop:disable Naming/PredicateName
+ PDK::Util::Filesystem.exist?(single_item_path(item_path))
+ end
+
+ # @see PDK::Template::Renderer::AbstractRenderer.render_single_item
+ def render_single_item(relative_file_path, template_data_hash)
+ template_file = single_item_path(relative_file_path)
+ return nil unless PDK::Util::Filesystem.file?(template_file) && PDK::Util::Filesystem.readable?(template_file)
+
+ PDK.logger.debug(_("Rendering '%{template}'...") % { template: template_file })
+ new_template_file(template_file, template_data_hash).render
+ end
+
+ # Returns the full path for a single item
+ #
+ # @param item_path [String] The path of the single item to render
+ # @return [String]
+ # @api private
+ #:nocov:
+ def single_item_path(item_path)
+ File.join(template_root, 'object_templates', item_path)
+ end
+ #:nocov:
+
+ # Helper method used during testing
+ #:nocov:
+ # @api private
+ def new_template_file(template_file, template_data_hash)
+ TemplateFile.new(template_file, template_data_hash)
+ end
+ #:nocov:
+
+ # Helper method used during testing
+ #:nocov:
+ # @api private
+ def new_legacy_template_dir(context, uri, path, module_metadata = {})
+ LegacyTemplateDir.new(context, uri, path, module_metadata)
+ end
+ #:nocov:
+
+ # Renders a new module
+ #
+ # @param options [Hash{Object => Object}] A list of options to pass through to the renderer. See PDK::Template::TemplateDir helper methods for other options
+ # @see #render
+ # @api private
+ #:nocov: This is tested in acceptance and packaging tests
+ def render_module(options = {})
+ require 'pdk/template/renderer/v1/template_file'
+
+ moduleroot_dir = File.join(template_root, 'moduleroot')
+ moduleroot_init = File.join(template_root, 'moduleroot_init')
+
+ dirs = [moduleroot_dir]
+ dirs << moduleroot_init if options[:include_first_time]
+
+ legacy_template_dir = new_legacy_template_dir(context, template_uri, template_root, options[:module_metadata] || {})
+
+ files_in_template(dirs).each do |template_file, template_loc|
+ template_file = template_file.to_s
+ PDK.logger.debug(_("Rendering '%{template}'...") % { template: template_file })
+ dest_path = template_file.sub(%r{\.erb\Z}, '')
+ config = legacy_template_dir.config_for(dest_path)
+
+ dest_status = if template_loc.start_with?(moduleroot_init)
+ :init
+ else
+ :manage
+ end
+
+ if config['unmanaged']
+ dest_status = :unmanage
+ elsif config['delete']
+ dest_status = :delete
+ else
+ begin
+ dest_content = new_template_file(File.join(template_loc, template_file), configs: config, template_dir: legacy_template_dir).render
+ rescue => error
+ error_msg = _(
+ "Failed to render template '%{template}'\n" \
+ '%{exception}: %{message}',
+ ) % { template: template_file, exception: error.class, message: error.message }
+ raise PDK::CLI::FatalError, error_msg
+ end
+ end
+
+ yield dest_path, dest_content, dest_status
+ end
+ end
+ #:nocov:
+
+ # Returns all files in the given template directories
+ #
+ # @param dirs [Array[String]] Directories to search in
+ # @param glob_suffix [Array[String]] File glob to use when searching for files. Defaults to ['**', '*']
+ #
+ # @return [Hash{String => String}] Key is the template file relative path and the value is the absolute path to the template directory
+ # @api private
+ def files_in_template(dirs, glob_suffix = ['**', '*'])
+ temp_paths = []
+ dirlocs = []
+ dirs.each do |dir|
+ raise ArgumentError, _("The directory '%{dir}' doesn't exist") % { dir: dir } unless PDK::Util::Filesystem.directory?(dir)
+ temp_paths += PDK::Util::Filesystem.glob(File.join(dir, *glob_suffix), File::FNM_DOTMATCH).select do |template_path|
+ if PDK::Util::Filesystem.file?(template_path) && !PDK::Util::Filesystem.symlink?(template_path)
+ dirlocs << dir
+ end
+ end
+ temp_paths.map do |template_path|
+ template_path.sub!(%r{\A#{Regexp.escape(dir)}#{Regexp.escape(File::SEPARATOR)}}, '')
+ end
+ end
+ Hash[temp_paths.zip dirlocs]
+ end
+ end
+ end
+ end
+ end
+end