UNPKG

composr-cli

Version:
98 lines (78 loc) 2.9 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 _async = require('async2'); var _async2 = _interopRequireDefault(_async); var _gauge = require('gauge'); var _gauge2 = _interopRequireDefault(_gauge); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _mkdirp = require('mkdirp'); var _mkdirp2 = _interopRequireDefault(_mkdirp); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var gauge = new _gauge2.default(); var snippets = []; /** * Locate model files */ var buildSnippet = function buildSnippet(config, next) { // progressBAr var progress = 0; (0, _glob2.default)('**/*.snippet.js', null, function (err, files) { if (err) return _print2.default.error(err); snippets = []; var increment = 1 / files.length; _print2.default.ok(files.length + ' Snippets models founds'); // bulk execution var buildSnippetExecList = []; var snippetDirTmp = process.cwd() + '/.tmp/src/snippets/'; files.forEach(function (filePath) { buildSnippetExecList.push(function (callback) { progress += increment; var snippetDir = filePath.split('/'); var snippetName = snippetDir[snippetDir.length - 1].replace('.snippet.js', ''); snippetDir = filePath.replace(snippetDir[snippetDir.length - 1], ''); var code = _fs2.default.readFileSync(filePath, 'utf8'); var codehash = new Buffer(code).toString('base64'); var model = { name: snippetName, version: config.version, codehash: codehash }; snippets.push(model); gauge.show('Building Snippets → ' + snippetName, progress); _fs2.default.writeFileSync(snippetDirTmp + snippetName + '.snippet.json', (0, _stringify2.default)(model, null, '\t')); callback(null, model); }); }); executeBuild(buildSnippetExecList, next); }); }; var executeBuild = function executeBuild(list, next) { _async2.default.parallel(list, function (err, results) { gauge.hide(); gauge.disable(); if (err) _print2.default.error(err); return next(err, snippets); }); }; var createTmpDir = function createTmpDir(next) { // create temporal directory (0, _mkdirp2.default)(process.cwd() + '/.tmp/src/snippets/', function (err) { if (err) return next(err, null); return next(err, null); }); }; var locateModels = function locateModels(config, next) { createTmpDir(function (err, result) { if (err) _print2.default.error(err); buildSnippet(config, function (err, result) { return next(err, result); }); }); }; module.exports = locateModels;