motion
Version:
motion - moving development forward
242 lines (178 loc) • 6.56 kB
JavaScript
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
;