lib/gonative/utils/template_inflator.rb in gonative-cli-0.5.6 vs lib/gonative/utils/template_inflator.rb in gonative-cli-0.6.0

- old
+ new

@@ -1,21 +1,51 @@ # frozen_string_literal: true module GoNative module Utils class TemplateInflator - def initialize(content) - @content = content.dup + autoload :FileUtils, 'fileutils' + + extend DSL::Serviceable + + def initialize(options) + @options = options end - - def call(values) - values.each { |name, value| content.gsub!("{{#{name}}}", value.to_s) } - - content + + def call + Dir.glob('*/').each do |dir| + FileUtils.cd(dir) + call + FileUtils.cd('..') + dir_name = dir.delete_suffix('/') + normalized_name = normalized_name(dir_name) + FileUtils.mv(dir_name, normalized_name) if dir_name != normalized_name + end + inflate_files end + + def inflate_files + Dir.glob("*#{TEMPLATE_FILES_EXTENSION}").each do |file| + File.write(normalized_name(file), contents(file)) + FileUtils.rm(file) + end + end + + def contents(file) + content = File.read(file) + Utils::ContentEvaluator.call(content, options) + end + + def normalized_name(file_name) + new_name = file_name.dup + options.each do |key, value| + new_name.gsub!(key.to_s.upcase, value) + end + new_name.delete_suffix(TEMPLATE_FILES_EXTENSION) + end private - attr_reader :content + attr_reader :options end end end