reactors-cli
Version:
Command line utility for reactors
351 lines (280 loc) • 14.2 kB
JavaScript
;
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);
};
}());
}