From c1e6e3ec5ae544fb61a8c9e2f6d011b9b3bc65d2 Mon Sep 17 00:00:00 2001 From: Andrew Bradley Date: Sat, 31 Oct 2020 20:39:11 -0400 Subject: [PATCH] Cleanup bin script entrypoint; accepts a args object so we don't need to slice process.argv (#1141) --- src/bin-script-deprecated.ts | 2 +- src/bin-script.ts | 2 +- src/bin-transpile.ts | 2 +- src/bin.ts | 105 ++++++++++++++++++----------------- 4 files changed, 57 insertions(+), 54 deletions(-) diff --git a/src/bin-script-deprecated.ts b/src/bin-script-deprecated.ts index 6c0dc6f82..e24d5e81b 100644 --- a/src/bin-script-deprecated.ts +++ b/src/bin-script-deprecated.ts @@ -7,4 +7,4 @@ console.warn( 'Please use ts-node-script instead' ) -main(['--script-mode', ...process.argv.slice(2)]) +main(undefined, { '--script-mode': true }) diff --git a/src/bin-script.ts b/src/bin-script.ts index 66e1113ee..47f6e1587 100644 --- a/src/bin-script.ts +++ b/src/bin-script.ts @@ -2,4 +2,4 @@ import { main } from './bin' -main(['--script-mode', ...process.argv.slice(2)]) +main(undefined, { '--script-mode': true }) diff --git a/src/bin-transpile.ts b/src/bin-transpile.ts index 241c15f43..68c1df1aa 100644 --- a/src/bin-transpile.ts +++ b/src/bin-transpile.ts @@ -2,4 +2,4 @@ import { main } from './bin' -main(['--transpile-only', ...process.argv.slice(2)]) +main(undefined, { '--transpile-only': true }) diff --git a/src/bin.ts b/src/bin.ts index 13c19c38a..bac650106 100644 --- a/src/bin.ts +++ b/src/bin.ts @@ -31,56 +31,59 @@ class EvalState { /** * Main `bin` functionality. */ -export function main (argv: string[]) { - const args = arg({ - // Node.js-like options. - '--eval': String, - '--interactive': Boolean, - '--print': Boolean, - '--require': [String], - - // CLI options. - '--help': Boolean, - '--script-mode': Boolean, - '--version': arg.COUNT, - - // Project options. - '--dir': String, - '--files': Boolean, - '--compiler': String, - '--compiler-options': parse, - '--project': String, - '--ignore-diagnostics': [String], - '--ignore': [String], - '--transpile-only': Boolean, - '--type-check': Boolean, - '--compiler-host': Boolean, - '--pretty': Boolean, - '--skip-project': Boolean, - '--skip-ignore': Boolean, - '--prefer-ts-exts': Boolean, - '--log-error': Boolean, - '--emit': Boolean, - - // Aliases. - '-e': '--eval', - '-i': '--interactive', - '-p': '--print', - '-r': '--require', - '-h': '--help', - '-s': '--script-mode', - '-v': '--version', - '-T': '--transpile-only', - '-H': '--compiler-host', - '-I': '--ignore', - '-P': '--project', - '-C': '--compiler', - '-D': '--ignore-diagnostics', - '-O': '--compiler-options' - }, { - argv, - stopAtPositional: true - }) +export function main (argv: string[] = process.argv.slice(2), entrypointArgs: Record = {}) { + const args = { + ...entrypointArgs, + ...arg({ + // Node.js-like options. + '--eval': String, + '--interactive': Boolean, + '--print': Boolean, + '--require': [String], + + // CLI options. + '--help': Boolean, + '--script-mode': Boolean, + '--version': arg.COUNT, + + // Project options. + '--dir': String, + '--files': Boolean, + '--compiler': String, + '--compiler-options': parse, + '--project': String, + '--ignore-diagnostics': [String], + '--ignore': [String], + '--transpile-only': Boolean, + '--type-check': Boolean, + '--compiler-host': Boolean, + '--pretty': Boolean, + '--skip-project': Boolean, + '--skip-ignore': Boolean, + '--prefer-ts-exts': Boolean, + '--log-error': Boolean, + '--emit': Boolean, + + // Aliases. + '-e': '--eval', + '-i': '--interactive', + '-p': '--print', + '-r': '--require', + '-h': '--help', + '-s': '--script-mode', + '-v': '--version', + '-T': '--transpile-only', + '-H': '--compiler-host', + '-I': '--ignore', + '-P': '--project', + '-C': '--compiler', + '-D': '--ignore-diagnostics', + '-O': '--compiler-options' + }, { + argv, + stopAtPositional: true + }) + } // Only setting defaults for CLI-specific flags // Anything passed to `register()` can be `undefined`; `create()` will apply @@ -509,5 +512,5 @@ function hasOwnProperty (object: any, property: string): boolean { } if (require.main === module) { - main(process.argv.slice(2)) + main() }