#!/usr/bin/env node import minimist from 'minimist'; import { resolve } from 'path'; import { spawn } from 'cross-spawn-async'; import checkUpdate from '../lib/check-update'; const argv = minimist(process.argv.slice(2)); // options const debug = argv.debug || argv.d; // auto-update checking const update = checkUpdate({ debug }); const exit = (code) => { update.then(() => process.exit(code)); // don't wait for updates more than a second // when the process really wants to exit setTimeout(() => process.exit(code), 1000); }; const defaultCommand = 'deploy'; const commands = new Set([defaultCommand, 'list', 'ls', 'rm', 'remove', 'alias', 'aliases', 'ln', 'domain', 'domains']); const aliases = new Map([['ls', 'list'], ['rm', 'remove'], ['ln', 'alias'], ['aliases', 'alias'], ['domain', 'domains']]); let cmd = argv._[0]; let args = []; if ('help' === cmd) { cmd = argv._[1]; if (!commands.has(cmd)) cmd = defaultCommand; args.push('--help'); } if (commands.has(cmd)) { cmd = aliases.get(cmd) || cmd; args = args.concat(process.argv.slice(3)); } else { cmd = defaultCommand; args = args.concat(process.argv.slice(2)); } let bin = resolve(__dirname, 'now-' + cmd); if (process.enclose) { args.unshift("--entrypoint", bin); bin = process.execPath; } const proc = spawn(bin, args, { stdio: 'inherit', customFds: [0, 1, 2] }); proc.on('close', (code) => exit(code)); proc.on('error', () => exit(1));