Sha256: a4847b8559591369f53db15c06dc38e78ddb4bd157676cdb1a2bea9d3c0ee57e
Contents?: true
Size: 1.48 KB
Versions: 1
Compression:
Stored size: 1.48 KB
Contents
module FsTemplate class Project include FromHash attr_accessor :path def config_body if FileTest.exist?("#{path}/.fstemplate") File.read("#{path}/.fstemplate") elsif FileTest.exist?("#{path}/.overlay") File.read("#{path}/.overlay") else raise "no config" end end fattr(:config) do res = ProjectConfig.new res.body = config_body res.load! res end def overlay_paths config.overlays + [path] end fattr(:overlays) do overlay_paths.map { |x| Files.load(x) } end fattr(:base_files) do Files.load(config.base) end fattr(:combined_files) do res = base_files overlays.each do |overlay| res = res.apply(overlay) end res end def write_to!(output_path) base_files.write_to! output_path `rm -rf #{output_path}/.git` ec "cd #{output_path} && git init && git add . && git commit -m 'Base Files #{config.base}'", :silent => true combined_files.write_to!(output_path) ec "cd #{output_path} && git add . && git commit -m 'Overlay Files #{path}'", :silent => true end end class ProjectConfig include FromHash attr_accessor :body, :base fattr(:overlays) { [] } def base(*args) if args.empty? @base else @base = args.first end end def overlay(name) self.overlays << name end def load! c = self eval(body) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fs_template-0.1.0 | lib/fs_template/project.rb |