56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import * as CLI from 'yargs';
|
|
import {
|
|
warn, error,
|
|
default_path,
|
|
Options, OutputFormat, OutputTarget, inspect
|
|
} from './';
|
|
|
|
|
|
const LIGHT = 'http://google.co.uk';
|
|
const HEAVY = 'http://0.0.0.0:5555/app/xcf?debug=true&xblox=debug&xgrid=debug&davinci=debug&userDirectory=/PMaster/x4mm/user;'
|
|
|
|
// default options for all commands
|
|
export const defaultOptions = (yargs: CLI.Argv) => {
|
|
return yargs.option('url', {
|
|
default: LIGHT,
|
|
describe: 'The URL to analyze'
|
|
}).option('format', {
|
|
default: 'text',
|
|
describe: 'Normal human readable text or JSON [text|json]'
|
|
}).option('target', {
|
|
default: 'console',
|
|
describe: 'Output target [console|file]'
|
|
}).option('path', {
|
|
default: '',
|
|
describe: 'The target location on the local filesystem for --target=file'
|
|
}).option('debug', {
|
|
default: 'false',
|
|
describe: 'Enable internal debug message'
|
|
})
|
|
};
|
|
|
|
// Sanitizes faulty user argv options for all commands.
|
|
export const sanitize = (argv: CLI.Arguments): Options => {
|
|
const args = argv as Options;
|
|
args.cwd = args.cwd || process.cwd();
|
|
if (!args.url) {
|
|
// internal user error, should never happen!
|
|
error('Invalid url, abort');
|
|
return process.exit();
|
|
}
|
|
// path given but target is not file, correct to file
|
|
if (args.path && args.target !== OutputTarget.FILE) {
|
|
args.target = OutputTarget.FILE;
|
|
}
|
|
// target is file but no path given, correct to default file
|
|
if (args.target === OutputTarget.FILE && !args.path) {
|
|
args.path = default_path(args.cwd, args.url);
|
|
}
|
|
// format string not valid
|
|
if (!(argv.format in OutputFormat)) {
|
|
warn(`Unknown output format ${argv.format}! Default to ${OutputFormat.text}`);
|
|
args.format = OutputFormat.text;
|
|
}
|
|
return args;
|
|
};
|