UNPKG

motion

Version:

motion - moving development forward

242 lines (178 loc) 6.56 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.init = init; exports.banner = banner; exports.resume = resume; exports.stop = stop; var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk); var _server = require('./server'); var _server2 = _interopRequireDefault(_server); var _shutdown = require('./shutdown'); var _shutdown2 = _interopRequireDefault(_shutdown); var _open = require('open'); var _open2 = _interopRequireDefault(_open); var _keypress = require('keypress'); var _keypress2 = _interopRequireDefault(_keypress); var _requires = require('./lib/requires'); var _fns = require('./lib/fns'); var _log = require('./lib/log'); var _log2 = _interopRequireDefault(_log); var _openInBrowser = require('./lib/openInBrowser'); var _openInBrowser2 = _interopRequireDefault(_openInBrowser); var _handleError = require('./lib/handleError'); var _handleError2 = _interopRequireDefault(_handleError); var _editor = require('./lib/editor'); var _editor2 = _interopRequireDefault(_editor); var _opts = require('./opts'); var _opts2 = _interopRequireDefault(_opts); var _bundler = require('./bundler'); var _bundler2 = _interopRequireDefault(_bundler); var _builder = require('./builder'); var _builder2 = _interopRequireDefault(_builder); var _startup = require('./startup'); var _cache = require('./cache'); var _cache2 = _interopRequireDefault(_cache); 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) { return step("next", value); }, function (err) { return step("throw", err); }); } } return step("next"); }); }; } const proc = process; // cache for keypress let stopped = false; function init() { if (!proc.stdin.setRawMode) return; start(); banner(); } function promptItem(message, color) { return `${ message.slice(0, 4) }${ _chalk2.default.bold(message[4]) }${ message.slice(5) }`; } let starts = (a, b) => a % b == 0; function promptLayout(messages, _ref) { var _ref$perLine = _ref.perLine; let perLine = _ref$perLine === undefined ? 2 : _ref$perLine; var _ref$prefix = _ref.prefix; let prefix = _ref$prefix === undefined ? ' › ' : _ref$prefix; var _ref$pad = _ref.pad; let pad = _ref$pad === undefined ? 12 : _ref$pad; let item = (str, color) => promptItem(_fns._.padEnd(`${ prefix }${ str }`, pad)); return messages.map((message, i) => starts(i, perLine) ? _chalk2.default.yellow(`\n${ item(message) }`) : _chalk2.default.dim(item(message))).join(''); } function banner() { const newLine = "\n"; const userEditor = process.env.VISUAL || process.env.EDITOR; print(`\n http://${ _server2.default.url() }`.green); const messages = ['Open', 'Verbose', 'Build', 'Editor', 'Rebundle']; if ((0, _opts2.default)('build') && (0, _opts2.default)('watch')) messages.push('Upload'); // print(' Shortcuts') print(promptLayout(messages, { perLine: 3 })); print(); resume(); } function start() { let OPTS = (0, _opts2.default)(); if (!proc.stdin.isTTY || OPTS.build && !OPTS.watch) return; (0, _keypress2.default)(proc.stdin); let building = false; // listen for the "keypress" event proc.stdin.on('keypress', function () { var ref = _asyncToGenerator(function* (ch, key) { if (!key) return; if (stopped) return; (0, _log2.default)('keypress', key.name); try { switch (key.name) { case 'return': // show banner again banner(); break; case 'b': yield _builder2.default.build(); break; case 'o': // open browser (0, _openInBrowser2.default)(true); break; case 'e': // open editor try { (0, _editor2.default)('.'); } catch (e) { print('Error running your editor, make sure your shell EDITOR variable is set'); } break; case 'r': // bundler print(' Bundling internals / npm packages...'.dim); yield _bundler2.default.all({ force: true }); print(` Bundled!\n`.green.bold); break; case 'v': // verbose logging _opts2.default.set('debug', !(0, _opts2.default)('debug')); _log2.default.setLogging(); print((0, _opts2.default)('debug') ? 'Set to log verbose'.yellow : 'Set to log quiet'.yellow, "\n"); break; case 'u': // upload if (building) return; if ((0, _opts2.default)('run')) { building = true; print('\n Building for production...'); yield (0, _startup.build)({ once: true }); building = false; } if ((0, _opts2.default)('build') && (0, _opts2.default)('watch')) { let Surge = surge(); const surge = Surge({ platform: 'motion.love', input: proc.stdin, output: proc.stdout }); print(`\n Publishing to surge...`); stop(); proc.stdout.isTTY = false; surge.publish({ postPublish() { print('🚀🚀🚀🚀'); resume(); } })({}); proc.stdout.isTTY = true; } break; case 'd': print("---------opts---------"); _opts2.default.debug(); print("\n---------cache---------"); _cache2.default.debug(); break; } } catch (e) { (0, _handleError2.default)(e); } // exit if (key.ctrl && key.name == 'c') { _shutdown2.default.now(); } }); return function (_x, _x2) { return ref.apply(this, arguments); }; }()); resume(); } function resume() { // listen for keys proc.stdin.setRawMode(true); proc.stdin.resume(); stopped = false; } function stop() { proc.stdin.setRawMode(false); proc.stdin.pause(); stopped = true; } exports.default = { init, banner, resume, stop }; //# sourceMappingURL=keys.js.map