Project

General

Profile

Download (1.56 KB) Statistics
| Branch: | Tag: | Revision:
module Foreman
module Renderer
PREVIEW_MODE = 'preview'
REAL_MODE = 'real'
AVAILABLE_RENDERING_MODES = [PREVIEW_MODE, REAL_MODE]

class << self
attr_writer :config

def config
@config ||= Foreman::Renderer::Configuration.new
end

def configure
yield config
end

def render_template_to_tempfile(template:, prefix:, host: nil, params: {}, variables: {}, options: {})
file = ''
source = get_source(template: template, host: host)
scope = get_scope(host: host, params: params, variables: variables)
Tempfile.open(prefix, Rails.root.join('tmp')) do |f|
f.print render(source, scope)
f.flush
f.chmod options[:mode] if options[:mode]
file = f
end
file
end

def get_source(klass: nil, template:, **args)
klass ||= Foreman::Renderer::Source::Database
klass.new(template)
end

def get_scope(source: nil, klass: nil, host: nil, params: {}, variables: {}, mode: REAL_MODE, template: nil, template_input_values: {})
source ||= get_source(template: template)
klass ||= template&.default_render_scope_class || Foreman::Renderer::Scope::Provisioning
klass.new(source: source, host: host, params: params, variables: variables, mode: mode, template_input_values: template_input_values)
end

def renderer
Setting[:safemode_render] ? Foreman::Renderer::SafeModeRenderer : Foreman::Renderer::UnsafeModeRenderer
end

delegate :render, to: :renderer
end
end
end
(17-17/20)