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