UNPKG

composr-cli

Version:
99 lines (80 loc) 3.44 kB
'use strict'; 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;