UNPKG

motion

Version:

motion - moving development forward

237 lines (175 loc) 6.37 kB
exports.__esModule = true; exports.init = init; exports.banner = banner; exports.resume = resume; exports.stop = stop; 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) { var callNext = step.bind(null, 'next'); var callThrow = step.bind(null, 'throw'); 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 { Promise.resolve(value).then(callNext, callThrow); } } callNext(); }); }; } 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 _libRequires = require('./lib/requires'); var _libFns = require('./lib/fns'); var _libLog = require('./lib/log'); var _libLog2 = _interopRequireDefault(_libLog); var _libOpenInBrowser = require('./lib/openInBrowser'); var _libOpenInBrowser2 = _interopRequireDefault(_libOpenInBrowser); var _libHandleError = require('./lib/handleError'); var _libHandleError2 = _interopRequireDefault(_libHandleError); var _libEditor = require('./lib/editor'); var _libEditor2 = _interopRequireDefault(_libEditor); 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); var proc = process; // cache for keypress var 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); } var starts = function starts(a, b) { return a % b == 0; }; function promptLayout(messages, _ref) { var _ref$perLine = _ref.perLine; var perLine = _ref$perLine === undefined ? 2 : _ref$perLine; var _ref$prefix = _ref.prefix; var prefix = _ref$prefix === undefined ? ' › ' : _ref$prefix; var _ref$pad = _ref.pad; var pad = _ref$pad === undefined ? 12 : _ref$pad; var item = function item(str, color) { return promptItem(_libFns._.padEnd('' + prefix + str, pad)); }; return messages.map(function (message, i) { return starts(i, perLine) ? _chalk2['default'].yellow('\n' + item(message)) : _chalk2['default'].dim(item(message)); }).join(''); } function banner() { var newLine = "\n"; var userEditor = process.env.VISUAL || process.env.EDITOR; print(('\n http://' + _server2['default'].url()).green); var messages = ['Open', 'Verbose', 'Build', 'Editor', 'Rebundle']; if (_opts2['default']('build') && _opts2['default']('watch')) messages.push('Upload'); // print(' Shortcuts') print(promptLayout(messages, { perLine: 3 })); print(); resume(); } function start() { var OPTS = _opts2['default'](); if (!proc.stdin.isTTY || OPTS.build && !OPTS.watch) return; _keypress2['default'](proc.stdin); var building = false; // listen for the "keypress" event proc.stdin.on('keypress', _asyncToGenerator(function* (ch, key) { if (!key) return; if (stopped) return; _libLog2['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 _libOpenInBrowser2['default'](true); break; case 'e': // open editor try { _libEditor2['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', !_opts2['default']('debug')); _libLog2['default'].setLogging(); print(_opts2['default']('debug') ? 'Set to log verbose'.yellow : 'Set to log quiet'.yellow, "\n"); break; case 'u': // upload if (building) return; if (_opts2['default']('run')) { building = true; print('\n Building for production...'); yield _startup.build({ once: true }); building = false; } if (_opts2['default']('build') && _opts2['default']('watch')) { var Surge = _surge(); var _surge = Surge({ platform: 'motion.love', input: proc.stdin, output: proc.stdout }); print('\n Publishing to surge...'); stop(); proc.stdout.isTTY = false; _surge.publish({ postPublish: function postPublish() { print('🚀🚀🚀🚀'); resume(); } })({}); proc.stdout.isTTY = true; } break; case 'd': print("---------opts---------"); _opts2['default'].debug(); print("\n---------cache---------"); _cache2['default'].debug(); break; } } catch (e) { _libHandleError2['default'](e); } // exit if (key.ctrl && key.name == 'c') { _shutdown2['default'].now(); } })); 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: init, banner: banner, resume: resume, stop: stop };