class Slnky::Generator::Base
Attributes
dir[R]
name[R]
Public Class Methods
new(name, options={})
click to toggle source
# File lib/slnky/generator.rb, line 12 def initialize(name, options={}) options = { force: false, }.merge(options) @name = name @service = "slnky-#{name}" @dir = File.expand_path("./#{@service}") short = self.class.name.split('::').last.downcase @template = File.expand_path("../template/#{short}", __FILE__) @force = options[:force] end
Public Instance Methods
generate()
click to toggle source
# File lib/slnky/generator.rb, line 24 def generate say "<%= color('generating service #{@name}', BOLD) %>" # puts " from: #{@template}" # puts " to: #{@dir}" process_files # git init if File.directory?("#{@dir}/.git") puts "git already initialized" else puts "initializing git..." `cd #{@dir} && git init . || true` `cd #{@dir} && git add .` end end
Protected Instance Methods
askyn(message, options={})
click to toggle source
# File lib/slnky/generator.rb, line 41 def askyn(message, options={}) options = { choices: 'yn', }.merge(options) answer = ask("<%= color('#{message}', BOLD) %> [#{options[:choices]}]") do |q| q.echo = false q.character = true q.validate = /\A[#{options[:choices]}]\Z/ end answer == 'y' end
file(path, dest)
click to toggle source
# File lib/slnky/generator.rb, line 76 def file(path, dest) # puts "file: #{file}" FileUtils.cp(path, dest) end
mkdir(dir)
click to toggle source
# File lib/slnky/generator.rb, line 70 def mkdir(dir) return if File.directory?(dir) # puts "mkdir: #{dir}" FileUtils.mkdir_p(dir) end
process_files()
click to toggle source
# File lib/slnky/generator.rb, line 53 def process_files Find.find(@template).each do |path| next unless File.file?(path) file = path.gsub(/^#{@template}\//, '').gsub('NAME', @name) ext = File.extname(path) mkdir(File.dirname("#{@dir}/#{file}")) dest = "#{@dir}/#{file}".gsub(/\.erb$/, '') say " <%= color('#{dest.gsub(/^#{File.expand_path('.')}\//, '')}', GREEN) %>" if ext == '.erb' dest = dest tmpl(path, dest) if !File.exists?(dest) || @force || askyn(' overwrite file?') else file(path, dest) if !File.exists?(dest) || @force || askyn(' overwrite file?') end end end
tmpl(path, dest)
click to toggle source
# File lib/slnky/generator.rb, line 81 def tmpl(path, dest) # puts "tmpl: #{file}" var = { name: @name, dir: @dir, cap: @name.capitalize, service: @service } # out = file.gsub(/\.erb$/, '') # dest = "#{@dir}/#{out}" # puts " #{dest}" template = Tilt.new(path) output = template.render(self, var) File.write(dest, output) end