class Ryonan::Filer
Attributes
logger[W]
root[RW]
Public Class Methods
cp_r(src, dest)
click to toggle source
# File lib/ryonan/filer.rb, line 50 def cp_r(src, dest) logger.info("cp -r #{src} #{dest}") FileUtils.cp_r(src, dest) end
logger()
click to toggle source
# File lib/ryonan/filer.rb, line 46 def logger @logger ||= Logger.new(STDOUT) end
mv(src, dest)
click to toggle source
# File lib/ryonan/filer.rb, line 55 def mv(src, dest) logger.info("mv #{src} #{dest}") FileUtils.mv(src, dest) end
new(root)
click to toggle source
# File lib/ryonan/filer.rb, line 8 def initialize(root) self.root = root end
render_erb(erb, hash)
click to toggle source
# File lib/ryonan/filer.rb, line 65 def render_erb(erb, hash) result = Renderer.new(hash).render(open(erb).read) Filer.logger.info("render_erb #{erb} to #{erb.gsub(/\.erb$/, '')}") open(erb.gsub(/\.erb$/, ''), 'w') { |file| file.puts(result) } Filer.rm(erb) end
rm(file)
click to toggle source
# File lib/ryonan/filer.rb, line 60 def rm(file) logger.info("rm #{file}") FileUtils.rm(file) end
Public Instance Methods
dirs()
click to toggle source
# File lib/ryonan/filer.rb, line 16 def dirs files.select { |file_path| FileTest.directory?(file_path) } end
erbs()
click to toggle source
# File lib/ryonan/filer.rb, line 24 def erbs files.select { |file_path| file_path.match(/\.erb$/) } end
files()
click to toggle source
# File lib/ryonan/filer.rb, line 12 def files Dir.glob("#{root}/**/*") end
recursive_rename_files(from, to)
click to toggle source
# File lib/ryonan/filer.rb, line 28 def recursive_rename_files(from, to) from_value = "__#{from}__" while files.any? { |dir| dir.match(/#{from_value}/) } src = files.select { |dir| dir.match(/#{from_value}/) }.first dest = src.gsub(/#{from_value}/, to) Filer.mv(src, dest) end end
render_erbs(variable_hash)
click to toggle source
# File lib/ryonan/filer.rb, line 37 def render_erbs(variable_hash) erbs.each do |erb| Filer.render_erb(erb, variable_hash) end end
templatable_dirs()
click to toggle source
# File lib/ryonan/filer.rb, line 20 def templatable_dirs dirs.select { |dir| Dir::entries(dir).any? { |file| file == '.template' } } end