0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2025-02-03 23:09:17 -05:00
verdaccio/packages/cli/src/cli.ts
Juan Picado a9ba3d0649 refactor: config module (#1995)
* refactor: clean up config

* refactor: config, move methods

* chore: remove js-yaml from utils
2021-04-09 17:54:25 +02:00

66 lines
1.8 KiB
TypeScript

import commander from 'commander';
import { bgYellow, bgRed } from 'kleur';
import { logger } from '@verdaccio/logger';
import infoCommand from './commands/info';
import initProgram from './commands/init';
import { isVersionValid } from './utils';
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! ***"
)
);
}
if (isVersionValid()) {
global.console.error(
bgRed(
'Verdaccio requires at least Node.js ${MIN_NODE_VERSION} or higher,' +
' please upgrade your Node.js distribution'
)
);
process.exit(1);
}
process.title = 'verdaccio';
const pkgVersion = require('../package.json').version;
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) {
// handling "verdaccio [config]" case if "-c" is missing in command line
commander.config = commander.args.pop();
initProgram(commander, pkgVersion, pkgName);
} else if (isHelp) {
commander.help();
} else {
initProgram(commander, pkgVersion, pkgName);
}
process.on('uncaughtException', function (err) {
logger.fatal(
{
err: err,
},
'uncaught exception, please report (https://github.com/verdaccio/verdaccio/issues) ' +
'this: \n@{err.stack}'
);
process.exit(255);
});