machines/projects/Printhead/firmware/node/src/argv.ts
2023-11-12 21:43:05 +01:00

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;
};