0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2025-02-10 23:39:31 -05:00
verdaccio/packages/cli/src/cli.ts

67 lines
1.8 KiB
TypeScript
Raw Normal View History

2020-03-03 23:59:19 +01:00
import commander from 'commander';
import { bgYellow, bgRed } from 'kleur';
import { logger } from '@verdaccio/logger';
2020-03-03 23:59:19 +01:00
import infoCommand from './commands/info';
import initProgram from './commands/init';
import { isVersionValid } from './utils';
2020-03-03 23:59:19 +01:00
const isRootUser = process.getuid && process.getuid() === 0;
if (isRootUser) {
global.console.warn(
bgYellow().red(
"*** WARNING: Verdaccio doesn't need superuser privileges. Don't run it under root! ***"
)
);
2020-03-03 23:59:19 +01:00
}
if (isVersionValid()) {
global.console.error(
bgRed(
'Verdaccio requires at least Node.js ${MIN_NODE_VERSION} or higher,' +
' please upgrade your Node.js distribution'
)
);
2020-03-03 23:59:19 +01:00
process.exit(1);
}
process.title = 'verdaccio';
const pkgVersion = require('../package.json').version;
2020-03-03 23:59:19 +01:00
const pkgName = 'verdaccio';
commander
.option('-i, --info', 'prints debugging information about the local environment')
.option('-l, --listen <[host:]port>', 'host:port number to listen on (default: localhost:4873)')
.option('-c, --config <config.yaml>', 'use this configuration file (default: ./config.yaml)')
.version(pkgVersion)
.parse(process.argv);
const fallbackConfig = commander.args.length == 1 && !commander.config;
const isHelp = commander.args.length !== 0;
if (commander.info) {
infoCommand();
} else if (fallbackConfig) {
2020-03-03 23:59:19 +01:00
// handling "verdaccio [config]" case if "-c" is missing in command line
commander.config = commander.args.pop();
initProgram(commander, pkgVersion, pkgName);
2020-03-03 23:59:19 +01:00
} else if (isHelp) {
commander.help();
} else {
initProgram(commander, pkgVersion, pkgName);
2020-03-03 23:59:19 +01:00
}
process.on('uncaughtException', function (err) {
logger.fatal(
{
err: err,
},
'uncaught exception, please report (https://github.com/verdaccio/verdaccio/issues) ' +
'this: \n@{err.stack}'
);
2020-03-03 23:59:19 +01:00
process.exit(255);
});