composr-cli
Version:
CompoSR | Command Line Interface
99 lines (80 loc) • 3.44 kB
JavaScript
;
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
var _glob = require('glob');
var _glob2 = _interopRequireDefault(_glob);
var _print = require('../print');
var _print2 = _interopRequireDefault(_print);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _mkdirp = require('mkdirp');
var _mkdirp2 = _interopRequireDefault(_mkdirp);
var _modelGeneration = require('./modelGeneration');
var _modelGeneration2 = _interopRequireDefault(_modelGeneration);
var _modelValidator = require('./modelValidator');
var _modelValidator2 = _interopRequireDefault(_modelValidator);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* ------------------------------
* Build Phrase
* ------------------------------
*/
var buildPhrase = function buildPhrase(config, modelFilePath, gauge, next) {
var phraseDir = modelFilePath.split('/');
var phraseName = phraseDir[phraseDir.length - 1].replace('.model.json', '');
phraseDir = modelFilePath.replace(phraseDir[phraseDir.length - 1], '');
var tmpDir = process.cwd() + '/.tmp/';
var phraseDirTmp = tmpDir + phraseDir.replace(tmpDir, '');
var model = require(process.cwd() + '/' + modelFilePath);
gauge.pulse(phraseName);
// call to build phrase
// Check if model environment is set and is for the current env
if (!model.environments) {
model.environments = ['*'];
}
toBuild(phraseDirTmp, phraseDir, phraseName, config, model, next);
};
/**
* [description]
* @param {[type]} phraseDirTmp [description]
* @param {[type]} phraseDir [description]
* @param {[type]} phraseName [description]
* @param {[type]} config [description]
* @param {[type]} model [description]
* @param {Function} next [description]
* @return {[type]} [description]
*/
var toBuild = function toBuild(phraseDirTmp, phraseDir, phraseName, config, model, next) {
// Create temporal folder
(0, _mkdirp2.default)(phraseDirTmp, function (err) {
if (err) {
_print2.default.error(err);
return next(err, null);
}
// looking for code files related to model
(0, _glob2.default)(process.cwd() + '/' + phraseDir + '*.code.js', null, function (err, files) {
if (err) return next(null, model);
files.forEach(function (file) {
(0, _modelGeneration2.default)(file, phraseDir, phraseName, model, phraseDirTmp, function (err, result) {
if (err) _print2.default.error(err);
model.version = config.version;
var fileNameModel = phraseDirTmp + phraseName + '.model.json';
(0, _modelValidator2.default)({ model: model, phraseName: phraseName }, config, function (err, result) {
if (!err) {
_fs2.default.writeFileSync(fileNameModel, (0, _stringify2.default)(model, null, '\t'));
// Check environment for current destination
var __meta = { marked: false, modelPath: fileNameModel };
if (model.environments.indexOf(process.NODE_ENV) !== -1 || model.environments[0] === '*') {
__meta.marked = true;
}
model.__meta = __meta;
return next(null, model);
}
return next(err, null);
});
});
});
});
});
};
module.exports = buildPhrase;