From b8bb5e71b104ede069daa46366bdabc447b327b2 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Thu, 24 Oct 2019 10:15:15 +0200 Subject: [PATCH] Cleanup src/vs/platform/environment/node/argv.ts. Fixes #76239 --- src/vs/code/electron-main/main.ts | 4 +-- src/vs/code/node/cli.ts | 5 +-- src/vs/code/test/node/argv.test.ts | 3 +- src/vs/platform/environment/node/argv.ts | 35 +------------------ .../platform/environment/node/argvHelper.ts | 14 ++++++++ .../environment/node/waitMarkerFile.ts | 28 +++++++++++++++ 6 files changed, 50 insertions(+), 39 deletions(-) create mode 100644 src/vs/platform/environment/node/waitMarkerFile.ts diff --git a/src/vs/code/electron-main/main.ts b/src/vs/code/electron-main/main.ts index 9a4f97020eb..bb05eddc6ce 100644 --- a/src/vs/code/electron-main/main.ts +++ b/src/vs/code/electron-main/main.ts @@ -8,8 +8,8 @@ import { app, dialog } from 'electron'; import { assign } from 'vs/base/common/objects'; import { isWindows, IProcessEnvironment, isMacintosh } from 'vs/base/common/platform'; import product from 'vs/platform/product/common/product'; -import { parseMainProcessArgv } from 'vs/platform/environment/node/argvHelper'; -import { addArg, createWaitMarkerFile } from 'vs/platform/environment/node/argv'; +import { parseMainProcessArgv, addArg } from 'vs/platform/environment/node/argvHelper'; +import { createWaitMarkerFile } from 'vs/platform/environment/node/waitMarkerFile'; import { mkdirp } from 'vs/base/node/pfs'; import { validatePaths } from 'vs/code/node/paths'; import { LifecycleMainService, ILifecycleMainService } from 'vs/platform/lifecycle/electron-main/lifecycleMainService'; diff --git a/src/vs/code/node/cli.ts b/src/vs/code/node/cli.ts index 9e814c1b58b..71efcf3bffd 100644 --- a/src/vs/code/node/cli.ts +++ b/src/vs/code/node/cli.ts @@ -6,8 +6,9 @@ import * as os from 'os'; import * as fs from 'fs'; import { spawn, ChildProcess, SpawnOptions } from 'child_process'; -import { buildHelpMessage, buildVersionMessage, addArg, createWaitMarkerFile, OPTIONS } from 'vs/platform/environment/node/argv'; -import { parseCLIProcessArgv } from 'vs/platform/environment/node/argvHelper'; +import { buildHelpMessage, buildVersionMessage, OPTIONS } from 'vs/platform/environment/node/argv'; +import { parseCLIProcessArgv, addArg } from 'vs/platform/environment/node/argvHelper'; +import { createWaitMarkerFile } from 'vs/platform/environment/node/waitMarkerFile'; import { ParsedArgs } from 'vs/platform/environment/common/environment'; import product from 'vs/platform/product/common/product'; import * as paths from 'vs/base/common/path'; diff --git a/src/vs/code/test/node/argv.test.ts b/src/vs/code/test/node/argv.test.ts index 59911ebc41e..79ce7d22445 100644 --- a/src/vs/code/test/node/argv.test.ts +++ b/src/vs/code/test/node/argv.test.ts @@ -3,7 +3,8 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as assert from 'assert'; -import { formatOptions, Option, addArg } from 'vs/platform/environment/node/argv'; +import { formatOptions, Option } from 'vs/platform/environment/node/argv'; +import { addArg } from 'vs/platform/environment/node/argvHelper'; suite('formatOptions', () => { diff --git a/src/vs/platform/environment/node/argv.ts b/src/vs/platform/environment/node/argv.ts index 3721d14c40e..33a2671982a 100644 --- a/src/vs/platform/environment/node/argv.ts +++ b/src/vs/platform/environment/node/argv.ts @@ -7,13 +7,10 @@ import * as minimist from 'vscode-minimist'; import * as os from 'os'; import { localize } from 'vs/nls'; import { ParsedArgs } from 'vs/platform/environment/common/environment'; -import { join } from 'vs/base/common/path'; -import { writeFileSync } from 'vs/base/node/pfs'; /** * This code is also used by standalone cli's. Avoid adding any other dependencies. */ - const helpCategories = { o: localize('optionsUpperCase', "Options"), e: localize('extensionsManagement', "Extensions Management"), @@ -161,7 +158,7 @@ export function parseArgs(args: string[], options: OptionDescriptions, err } } } - // remote aliases to avoid confusion + // remove aliases to avoid confusion const parsedArgs = minimist(args, { string, boolean, alias }); const cleanedArgs: any = {}; @@ -310,33 +307,3 @@ export function buildVersionMessage(version: string | undefined, commit: string return `${version || localize('unknownVersion', "Unknown version")}\n${commit || localize('unknownCommit', "Unknown commit")}\n${process.arch}`; } -export function addArg(argv: string[], ...args: string[]): string[] { - const endOfArgsMarkerIndex = argv.indexOf('--'); - if (endOfArgsMarkerIndex === -1) { - argv.push(...args); - } else { - // if the we have an argument "--" (end of argument marker) - // we cannot add arguments at the end. rather, we add - // arguments before the "--" marker. - argv.splice(endOfArgsMarkerIndex, 0, ...args); - } - - return argv; -} - -export function createWaitMarkerFile(verbose?: boolean): string | undefined { - const randomWaitMarkerPath = join(os.tmpdir(), Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 10)); - - try { - writeFileSync(randomWaitMarkerPath, ''); - if (verbose) { - console.log(`Marker file for --wait created: ${randomWaitMarkerPath}`); - } - return randomWaitMarkerPath; - } catch (err) { - if (verbose) { - console.error(`Failed to create marker file for --wait: ${err}`); - } - return undefined; - } -} diff --git a/src/vs/platform/environment/node/argvHelper.ts b/src/vs/platform/environment/node/argvHelper.ts index 1dd2f688934..2aef6dff05c 100644 --- a/src/vs/platform/environment/node/argvHelper.ts +++ b/src/vs/platform/environment/node/argvHelper.ts @@ -69,3 +69,17 @@ export function parseCLIProcessArgv(processArgv: string[]): ParsedArgs { return parseAndValidate(args, true); } + +export function addArg(argv: string[], ...args: string[]): string[] { + const endOfArgsMarkerIndex = argv.indexOf('--'); + if (endOfArgsMarkerIndex === -1) { + argv.push(...args); + } else { + // if the we have an argument "--" (end of argument marker) + // we cannot add arguments at the end. rather, we add + // arguments before the "--" marker. + argv.splice(endOfArgsMarkerIndex, 0, ...args); + } + + return argv; +} diff --git a/src/vs/platform/environment/node/waitMarkerFile.ts b/src/vs/platform/environment/node/waitMarkerFile.ts new file mode 100644 index 00000000000..8916ef40732 --- /dev/null +++ b/src/vs/platform/environment/node/waitMarkerFile.ts @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +/** + * This code is also used by standalone cli's. Avoid adding dependencies to keep the size of the cli small. + */ +import * as path from 'vs/base/common/path'; +import * as os from 'os'; +import * as fs from 'fs'; + +export function createWaitMarkerFile(verbose?: boolean): string | undefined { + const randomWaitMarkerPath = path.join(os.tmpdir(), Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 10)); + + try { + fs.writeFileSync(randomWaitMarkerPath, ''); // use built-in fs to avoid dragging in more dependencies + if (verbose) { + console.log(`Marker file for --wait created: ${randomWaitMarkerPath}`); + } + return randomWaitMarkerPath; + } catch (err) { + if (verbose) { + console.error(`Failed to create marker file for --wait: ${err}`); + } + return undefined; + } +}