meteor-generate
Version:
Generate Meteor scaffolding on demand
51 lines (34 loc) • 1.38 kB
text/coffeescript
# Meteor Generate
# Copyright(c) 2014 Adam Brodzinski <adambrodzinski@gmail.com>
# MIT Licensed
fs = require 'fs-extra'
transformVariables = require './rename'
parseName = require './parse_name'
class Collection
constructor: (collName, opts) ->
@scriptExt = opts.extension || '.js'
@nameCamel = parseName(collName).camel
@nameSnake = parseName(collName).snake
@templatePath = templatePath + 'collection/'
@insertCollection()
@copyPermissionTemplate()
# private
insertCollection: () ->
collectionLine = @generateCollectionString()
@appendToCollectionFile(collectionLine)
generateCollectionString: ->
nameLower = @nameSnake.toLowerCase()
return "db.#{@nameSnake} = new Meteor.Collection('#{nameLower}');\n"
appendToCollectionFile: (line) ->
filename = "./both/lib/collections#{@scriptExt}"
fs.appendFileSync(filename, line)
copyPermissionTemplate: () ->
templateFile = @templatePath + "permission" + @scriptExt
destFile = "./server/permissions/" + @nameSnake + @scriptExt
fs.copySync(templateFile, destFile)
@renameTempateVariables(destFile)
renameTempateVariables: (template) ->
oldFileStr = fs.readFileSync(template, {encoding: 'utf-8'})
newFileStr = transformVariables(@nameCamel, oldFileStr)
fs.writeFileSync(template, newFileStr)
module.exports = Collection