spine.app
Version:
Spine app generator
45 lines (37 loc) • 1.15 kB
text/coffeescript
fs = require('fs')
fd = require('path')
mkdirp = require('./mkdirp')
ansi = require('./ansi')
isDir = (path) ->
fs.statSync(path).isDirectory()
class Template
constructor: (, , = {}) ->
files: ->
return [ ] unless isDir()
files = []
next = (dir) ->
for file in fs.readdirSync(dir)
files.push(file = "#{dir}/#{file}")
next(file) if isDir(file)
next
files
@::__defineGetter__ 'files', @::files
write: ->
mkdirp fd.dirname()
for path in
out = path.replace(, '')
out = fd.join(, out)
out = fd.normalize(out)
if isDir(path)
fs.mkdirSync out, 0o0775
console.log ansi("\tcreate\t", 'green'), out
else if fs.existsSync(out)
throw ("#{path} already exists")
else
data =
fs.writeFileSync out, data
console.log ansi("\tcreate\t", 'green'), out
parse: (data) ->
data.replace /\{\{([^}]+)\}\}/g, (_, key) =>
[key]
module.exports = Template