UNPKG

reactors-cli

Version:
351 lines (280 loc) 14.2 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = init; require('babel-polyfill'); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _fs = require('fs'); var _exec = require('../util/exec'); var _exec2 = _interopRequireDefault(_exec); var _read = require('../util/read'); var _read2 = _interopRequireDefault(_read); var _transform = require('../util/transform'); var _transform2 = _interopRequireDefault(_transform); var _write = require('../util/write'); var _write2 = _interopRequireDefault(_write); var _initApp = require('./initApp'); var _initApp2 = _interopRequireDefault(_initApp); var _initDesktop = require('./initDesktop'); var _initDesktop2 = _interopRequireDefault(_initDesktop); var _initMobile = require('./initMobile'); var _initMobile2 = _interopRequireDefault(_initMobile); var _initWeb = require('./initWeb'); var _initWeb2 = _interopRequireDefault(_initWeb); var _microRun = require('./microRun'); var _microRun2 = _interopRequireDefault(_microRun); var _transformTemplate = require('./transformTemplate'); var _transformTemplate2 = _interopRequireDefault(_transformTemplate); var _package = require('../../package.json'); var _package2 = _interopRequireDefault(_package); var _config = require('../config'); var _config2 = _interopRequireDefault(_config); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } function init(app, context) { var _this = this; var TEMPLATES = _path2.default.resolve(__dirname, '../../templates'); var CONTAINER = context || process.cwd(); var PROJECT = _path2.default.join(CONTAINER, app); var APP = _path2.default.join(PROJECT, 'app'); var DESKTOP = _path2.default.join(PROJECT, 'desktop'); return new Promise(function () { var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee9(resolve, reject) { return regeneratorRuntime.wrap(function _callee9$(_context9) { while (1) { switch (_context9.prev = _context9.next) { case 0: _context9.prev = 0; _context9.next = 3; return (0, _initMobile2.default)({ CONTAINER: CONTAINER, PROJECT: PROJECT, TEMPLATES: TEMPLATES, app: app }); case 3: _context9.next = 5; return (0, _microRun2.default)('Update gitignore', _asyncToGenerator(regeneratorRuntime.mark(function _callee() { var gitignore; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return (0, _read2.default)(_path2.default.join(PROJECT, '.gitignore')); case 2: gitignore = _context.sent; _context.next = 5; return (0, _write2.default)(_path2.default.join(PROJECT, '.gitignore'), gitignore + '\n\n# Reactors\nrelease/\ndesktop/\nweb/\n'); case 5: case 'end': return _context.stop(); } } }, _callee, _this); }))); case 5: _context9.next = 7; return (0, _microRun2.default)('Init yarn', _asyncToGenerator(regeneratorRuntime.mark(function _callee2() { return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return (0, _exec2.default)('yarn init --yes', { cwd: PROJECT }); case 2: return _context2.abrupt('return', _context2.sent); case 3: case 'end': return _context2.stop(); } } }, _callee2, _this); }))); case 7: _context9.next = 9; return (0, _microRun2.default)('Install app yarn', _asyncToGenerator(regeneratorRuntime.mark(function _callee3() { return regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.next = 2; return (0, _exec2.default)('yarn add ' + _config2.default.APP_DEPS.join(' '), { cwd: PROJECT }); case 2: return _context3.abrupt('return', _context3.sent); case 3: case 'end': return _context3.stop(); } } }, _callee3, _this); }))); case 9: _context9.next = 11; return (0, _microRun2.default)('Create README', _asyncToGenerator(regeneratorRuntime.mark(function _callee4() { return regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: _context4.next = 2; return (0, _transform2.default)(_path2.default.join(TEMPLATES, 'README.md'), _transformTemplate2.default.bind({ app: app }), _path2.default.join(PROJECT, 'README.md')); case 2: return _context4.abrupt('return', _context4.sent); case 3: case 'end': return _context4.stop(); } } }, _callee4, _this); }))); case 11: _context9.next = 13; return (0, _microRun2.default)('Create reactors.json', _asyncToGenerator(regeneratorRuntime.mark(function _callee5() { return regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: _context5.next = 2; return (0, _write2.default)(_path2.default.join(PROJECT, 'reactors.json'), JSON.stringify({ name: app, version: _package2.default.version, config: _config2.default }, null, 2)); case 2: return _context5.abrupt('return', _context5.sent); case 3: case 'end': return _context5.stop(); } } }, _callee5, _this); }))); case 13: _context9.next = 15; return (0, _microRun2.default)('Copy assets', _asyncToGenerator(regeneratorRuntime.mark(function _callee8() { return regeneratorRuntime.wrap(function _callee8$(_context8) { while (1) { switch (_context8.prev = _context8.next) { case 0: _context8.next = 2; return new Promise(function () { var _ref8 = _asyncToGenerator(regeneratorRuntime.mark(function _callee7(resolveAssets, rejectAssets) { return regeneratorRuntime.wrap(function _callee7$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: _context7.prev = 0; _context7.next = 3; return (0, _exec2.default)('mkdir assets', { cwd: PROJECT }); case 3: (0, _fs.readdir)(_path2.default.resolve(TEMPLATES, 'assets'), function () { var _ref9 = _asyncToGenerator(regeneratorRuntime.mark(function _callee6(error, files) { return regeneratorRuntime.wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: if (!error) { _context6.next = 2; break; } return _context6.abrupt('return', rejectAssets(error)); case 2: _context6.next = 4; return Promise.all(files.filter(function (file) { return (/\.png$/.test(file) ); }) // .map((file) => copy( // path.resolve(TEMPLATES, 'assets', file), // path.resolve(PROJECT, 'assets', file), // {defaultEncoding: 'binary'}, // )) .map(function (file) { return new Promise(function (resolveMapper) { var reader = (0, _fs.createReadStream)(_path2.default.resolve(TEMPLATES, 'assets', file)); var writer = (0, _fs.createWriteStream)(_path2.default.resolve(PROJECT, 'assets', file)); reader.pipe(writer); reader.on('end', resolveMapper); }); })); case 4: resolveAssets(); case 5: case 'end': return _context6.stop(); } } }, _callee6, _this); })); return function (_x5, _x6) { return _ref9.apply(this, arguments); }; }()); _context7.next = 9; break; case 6: _context7.prev = 6; _context7.t0 = _context7['catch'](0); rejectAssets(_context7.t0); case 9: case 'end': return _context7.stop(); } } }, _callee7, _this, [[0, 6]]); })); return function (_x3, _x4) { return _ref8.apply(this, arguments); }; }()); case 2: return _context8.abrupt('return', _context8.sent); case 3: case 'end': return _context8.stop(); } } }, _callee8, _this); }))); case 15: _context9.next = 17; return (0, _initApp2.default)({ APP: APP, PROJECT: PROJECT, TEMPLATES: TEMPLATES, app: app }); case 17: _context9.next = 19; return (0, _initDesktop2.default)({ DESKTOP: DESKTOP, PROJECT: PROJECT, TEMPLATES: TEMPLATES, app: app }); case 19: _context9.next = 21; return (0, _initWeb2.default)({ APP: APP, PROJECT: PROJECT, TEMPLATES: TEMPLATES, app: app }); case 21: resolve(); _context9.next = 28; break; case 24: _context9.prev = 24; _context9.t0 = _context9['catch'](0); console.log(_context9.t0.stack); reject(_context9.t0); case 28: case 'end': return _context9.stop(); } } }, _callee9, _this, [[0, 24]]); })); return function (_x, _x2) { return _ref.apply(this, arguments); }; }()); }