module PowerStencil::Engine::DirectoryProcessor
Attributes
files_not_to_rename[R]
files_not_to_render[R]
Public Instance Methods
render_single_template_file(source_template, destination_file, main_entry_point: nil)
click to toggle source
# File lib/power_stencil/engine/directory_processor.rb, line 40 def render_single_template_file(source_template, destination_file, main_entry_point: nil) compiled_universe = root_universe.compile scenario: config[:scenario] puts_and_logs 'Entities analysis completed.' logger.info 'Generating target file...' process_file source_template, destination_file, compiled_universe, overwrite_files: true, main_entry_point: main_entry_point ensure @files_not_to_rename = nil @files_not_to_render = nil end
render_source(source_dir, destination_dir, overwrite_files: false, main_entry_point: nil)
click to toggle source
# File lib/power_stencil/engine/directory_processor.rb, line 13 def render_source(source_dir, destination_dir, overwrite_files: false, main_entry_point: nil) compiled_universe = root_universe.compile scenario: config[:scenario] puts_and_logs 'Entities analysis completed.' logger.info 'Generating target...' setup_files_not_to_render source_dir setup_files_not_to_rename source_dir process_directory source: source_dir, destination: destination_dir, ignore_files_pattern: config[:ignore_filename_for_files_to_skip] do |src_file, dest_file| dest_file = detemplatized_file_name(dest_file, main_entry_point) unless main_entry_point.nil? if File.directory? src_file check_or_build_target_directory dest_file next else process_file src_file, dest_file, compiled_universe, overwrite_files: overwrite_files, main_entry_point: main_entry_point end end ensure @files_not_to_rename = nil @files_not_to_render = nil end
Private Instance Methods
check_or_build_target_directory(dir)
click to toggle source
# File lib/power_stencil/engine/directory_processor.rb, line 107 def check_or_build_target_directory(dir) FileUtils.mkpath dir end
detemplatized_file_name(filename, replacement_text)
click to toggle source
# File lib/power_stencil/engine/directory_processor.rb, line 58 def detemplatized_file_name(filename, replacement_text) replacement_text = replacement_text.tr '- /', '___' filename.gsub '{entity}', replacement_text end
process_file(src_file, dest_file, universe, overwrite_files: false, main_entry_point: nil)
click to toggle source
# File lib/power_stencil/engine/directory_processor.rb, line 77 def process_file(src_file, dest_file, universe, overwrite_files: false, main_entry_point: nil) unless files_not_to_rename.ignore_file? src_file config[:file_renaming_patterns].each do |regexp_str, replacement| regexp = Regexp.new regexp_str next if (src_file =~ regexp).nil? dest_file = dest_file.gsub regexp, replacement break end end if File.exist? dest_file unless overwrite_files logger.info "Skipping file '#{dest_file}'..." return end end check_or_build_target_directory File.dirname dest_file source_mode = File.stat(src_file).mode File.open(dest_file, 'w') do |f| if files_not_to_render.ignore_file? src_file logger.debug "Copying file '#{src_file}' to '#{dest_file}' (ignored for substitutions)." f.write File.read src_file else logger.debug "Rendering file '#{src_file}' to '#{dest_file}'." f.write render_template(src_file, universe, main_entry_point: main_entry_point) end end File.chmod source_mode, dest_file end
render_template(source, universe, main_entry_point: nil)
click to toggle source
# File lib/power_stencil/engine/directory_processor.rb, line 111 def render_template(source, universe, main_entry_point: nil) config[:templating_engines_map].each do |engine_name, file_pattern| unless (source =~ /#{file_pattern}/).nil? templating_engine_method_name = "render_#{engine_name}_template".to_sym unless private_methods.include? templating_engine_method_name raise PowerStencil::Error, "File '#{source}' is supposed to be rendered using '#{engine_name}', but seems not to be supported !" end context = running_context universe, main_entry_point: main_entry_point begin return send templating_engine_method_name, source, context rescue StandardError, SyntaxError => e logger.puts_and_logs "Error rendering #{engine_name} template '#{source}'", logs_as: :error, check_verbose: false raise e end end end logger.warn "File '#{source}' was supposed to be processed but there is no template engine defined ! Applying simple copy." File.read source end
setup_files_not_to_rename(source_dir)
click to toggle source
# File lib/power_stencil/engine/directory_processor.rb, line 71 def setup_files_not_to_rename(source_dir) @files_not_to_rename = DirGlobIgnore::IgnoreFileLists.new source_dir files_not_to_rename.ignore_file_name = config[:ignore_filename_for_files_to_rename] files_not_to_rename.load_ignore_files end
setup_files_not_to_render(source_dir)
click to toggle source
# File lib/power_stencil/engine/directory_processor.rb, line 65 def setup_files_not_to_render(source_dir) @files_not_to_render = DirGlobIgnore::IgnoreFileLists.new source_dir files_not_to_render.ignore_file_name = config[:ignore_filename_for_files_to_copy] files_not_to_render.load_ignore_files end