in src/cli.ts [4:117]
async function main() {
const args = yargs
.usage('$0 SRCDIR [OPTIONS]')
.option('entrypoint', { desc: 'typescript entrypoint (relative to SRCDIR)', default: 'index.ts' })
.option('dep', { desc: 'node module directories to include in compilation', type: 'array', string: true })
.option('jsii-path', { desc: 'write .jsii output to this path', type: 'string' })
.option('python-outdir', { desc: 'python output directory (requires --python-module-name)', type: 'string' })
.option('python-module-name', { desc: 'python module name', type: 'string' })
.option('java-outdir', { desc: 'java output directory (requires --java-package)', type: 'string' })
.option('java-package', { desc: 'the java package (namespace) to use for all generated types', type: 'string' })
.option('csharp-outdir', { desc: 'C# output directory (requires --csharp-namespace)', type: 'string' })
.option('csharp-namespace', { desc: 'the C# namespace to use for all generated types', type: 'string' })
.option('golang-outdir', { desc: 'golang output directory (requires --golang-module)', type: 'string' })
.option('golang-module', { desc: 'the golang module to use for all generated types', type: 'string' })
.option('golang-package', { desc: 'the golang package name to use for all generated types', type: 'string' })
.showHelpOnFail(true)
.help();
const argv = args.argv;
if (argv._.length !== 1) {
args.showHelp();
console.error();
console.error('Invalid number of arguments. expecting a single positional argument.');
process.exit(1);
}
const srcdir = argv._[0] as string;
await srcmak(srcdir, {
entrypoint: argv.entrypoint,
...parseDepOption(),
...parseJsiiOptions(),
...parsePythonOptions(),
...parseJavaOptions(),
...parseCSharpOptions(),
...parseGoLangOptions(),
});
function parseJsiiOptions() {
const jsiiPath = argv['jsii-path'];
if (!jsiiPath) { return undefined; }
return {
jsii: {
path: jsiiPath,
},
};
}
function parsePythonOptions() {
const outdir = argv['python-outdir'];
const moduleName = argv['python-module-name'];
if (!outdir && !moduleName) { return undefined; }
if (!outdir) { throw new Error('--python-outdir is required if --python-module-name is specified'); }
if (!moduleName) { throw new Error('--python-module-name is required if --python-outdir is specified'); }
return {
python: {
outdir: outdir,
moduleName: moduleName,
},
};
}
function parseJavaOptions() {
const outdir = argv['java-outdir'];
const packageName = argv['java-package'];
if (!outdir && !packageName) { return undefined; }
if (!outdir) { throw new Error('--java-outdir is required'); }
if (!packageName) { throw new Error('--java-package is required'); }
return {
java: {
outdir: outdir,
package: packageName,
},
};
}
function parseCSharpOptions() {
const outdir = argv['csharp-outdir'];
const namespace = argv['csharp-namespace'];
if (!outdir && !namespace) { return undefined; }
if (!outdir) { throw new Error('--csharp-outdir is required'); }
if (!namespace) { throw new Error('--csharp-namespace is required'); }
return {
csharp: {
outdir: outdir,
namespace: namespace,
},
};
}
function parseGoLangOptions() {
const outdir = argv['golang-outdir'];
const module = argv['golang-module'];
const packageName = argv['golang-package'];
if (!outdir && !module) { return undefined; }
if (!outdir) { throw new Error('--golang-outdir is required'); }
if (!module) { throw new Error('--golang-module is required'); }
if (!packageName) { throw new Error('--golang-package is required'); }
return {
golang: {
outdir: outdir,
moduleName: module,
packageName: packageName,
},
};
}
function parseDepOption() {
if (argv.dep?.length === 0) { return undefined; }
return {
deps: argv.dep,
};
}
}