rhapsody-cli
Version:
CLI for RhapsodyJS
58 lines (49 loc) • 1.37 kB
JavaScript
var fs = require('fs-extra'),
path = require('path'),
Wolverine = require('wolverine'),
Logger = new Wolverine({ printTime: false, printLevel: false }),
_ = require('lodash');
module.exports = function scaffoldModel(modelName, attributes) {
var appPath = process.cwd();
var model = require('../templates/modelTemplate');
var attribute,
attr,
i;
//Fills the model attributes with its types
for(i = 0; i < attributes.length; i++) {
attr = attributes[i];
attribute = attr.split(':');
if(attribute.length === 2) {
model.attributes[attribute[0]] = {
type: attribute[1]
};
}
else {
//If user does not pass the attribute type,
//use "String" as default
model.attributes[attribute[0]] = {
type: 'String'
};
}
}
var modelTemplate = _.template('var <%= name %> = <%= modelData %>;\n\nmodule.exports = <%= name %>;');
var modelString = modelTemplate({
name: modelName,
modelData: JSON.stringify(model, null, '\t')
});
try {
fs.writeFile(path.join(appPath, '/app/models/' + modelName + '.js'), modelString, { flag: 'wx'}, function(err) {
if(err) {
if(err.code = 'EEXIST') {
return Logger.error('Model ' + modelName + ' already exists');
}
return Logger.error(err.type);
}
Logger.info('Model ' + modelName + ' created');
});
}
catch(e) {
Logger.error(e);
throw e;
}
};