morbo-cli
Version:
… All tech debt is vermin in the eyes of Morbo!
84 lines (74 loc) • 1.74 kB
text/typescript
/* eslint-disable no-console */
import fs from 'fs-extra';
import minimist from 'minimist';
import morbo from '../src';
import pkg from '../package.json';
import defaultOptions, { Options } from '../src/lib/defaultOptions';
function help() {
return `
Usage:\n\
\n\
morbo [options] [file|glob ...]\n\
\n\
Options:\n\
\n\
-h, --help output usage information\n\
-v, --version output version\n\
\n\
Configuration:\n\
Create a .morborc file in the root directory of your project\n\
\n\
// Defaults\n\
{\n\
customDefinitions: {},
fileEncoding: 'utf8',
filesToScan: ['**/*.{js,php,go}'],
lineLengthLimit: 1000,
ignoredDirectories: [
'**/node_modules/**',
'.git/**',
'.hg/**',
'**/flow-typed/**',
'**/morbo_report/**',
'build/**',
'dist/**',
'config/**',
],
morboServerUri: 'URI_TO_MORBO_SERVER',
projectId: 'YOUR_MORBO_PROJECT_ID',
openReportOnCompletion: false,
scanPath: process.cwd(),
sendReportOnCompletion: false,
showGitBlame: true,
showSkippedChecks: false,
skipChecks: [],
}\n\
\n\
`;
}
const argv = minimist(process.argv.slice(2));
if (argv.version || argv.v) {
console.log(pkg.version);
process.exit();
}
if (argv.help || argv.h) {
console.log(help());
process.exit();
}
let options: Options = defaultOptions;
// Read options from .morborc
try {
const config = fs.readFileSync('.morborc', 'utf8');
options = { ...JSON.parse(config) };
} catch (err) {
if (err.message.match(/no such file or directory/)) {
console.log('No .morborc file, using default settings');
} else {
console.log(err);
}
}
const scanPath = argv._;
if (scanPath.length > 0) {
options.scanPath = scanPath.join(',');
}
morbo(options);