#!/usr/bin/env node // Native const {resolve} = require('path') // Packages const nodeVersion = require('node-version') const updateNotifier = require('update-notifier') const chalk = require('chalk') // Ours const {error} = require('../lib/error') const pkg = require('../lib/pkg') // Throw an error if node version is too low if (nodeVersion.major < 6) { error('Now requires at least version 6 of Node. Please upgrade!') process.exit(1) } if (!process.pkg) { const notifier = updateNotifier({pkg}) const update = notifier.update if (update) { let message = `Update available! ${chalk.red(update.current)} → ${chalk.green(update.latest)} \n` message += `Run ${chalk.magenta('npm i -g now')} to update!\n` message += `${chalk.magenta('Changelog:')} https://github.com/zeit/now-cli/releases/tag/${update.latest}` notifier.notify({message}) } } // This command will be run if no other sub command is specified const defaultCommand = 'deploy' const commands = new Set([ defaultCommand, 'help', 'list', 'ls', 'rm', 'remove', 'alias', 'aliases', 'ln', 'domain', 'domains', 'dns', 'cert', 'certs', 'secret', 'secrets', 'cc', 'billing', 'upgrade', 'downgrade', 'open' ]) const aliases = new Map([ ['ls', 'list'], ['rm', 'remove'], ['ln', 'alias'], ['aliases', 'alias'], ['domain', 'domains'], ['cert', 'certs'], ['secret', 'secrets'], ['cc', 'billing'], ['downgrade', 'upgrade'] ]) let cmd = defaultCommand const args = process.argv.slice(2) const index = args.findIndex(a => commands.has(a)) if (index > -1) { cmd = args[index] args.splice(index, 1) if (cmd === 'help') { if (index < args.length && commands.has(args[index])) { cmd = args[index] args.splice(index, 1) } else { cmd = defaultCommand } args.unshift('--help') } cmd = aliases.get(cmd) || cmd } const bin = resolve(__dirname, 'now-' + cmd + '.js') // Prepare process.argv for subcommand process.argv = process.argv.slice(0, 2).concat(args) // Load sub command // With custom parameter to make "pkg" happy require(bin, 'may-exclude')