From 92ee0d1e067ae70706cddaa6feca9a7659aa4d90 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 21 Mar 2017 10:49:39 +0100 Subject: [PATCH] :apple: :rewind: remove legacy cli check fixes #22366 --- .../cli/electron-browser/cli.contribution.ts | 143 +++--------------- 1 file changed, 20 insertions(+), 123 deletions(-) diff --git a/src/vs/workbench/parts/cli/electron-browser/cli.contribution.ts b/src/vs/workbench/parts/cli/electron-browser/cli.contribution.ts index 52a691104fb..4ee6bb14480 100644 --- a/src/vs/workbench/parts/cli/electron-browser/cli.contribution.ts +++ b/src/vs/workbench/parts/cli/electron-browser/cli.contribution.ts @@ -5,7 +5,6 @@ import * as nls from 'vs/nls'; import * as path from 'path'; -import * as os from 'os'; import * as cp from 'child_process'; import * as pfs from 'vs/base/node/pfs'; import { nfcall } from 'vs/base/common/async'; @@ -13,12 +12,10 @@ import { TPromise } from 'vs/base/common/winjs.base'; import URI from 'vs/base/common/uri'; import { Action } from 'vs/base/common/actions'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actionRegistry'; -import { IWorkbenchContributionsRegistry, IWorkbenchContribution, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions'; import { Registry } from 'vs/platform/platform'; import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { IMessageService, Severity } from 'vs/platform/message/common/message'; import { IEditorService } from 'vs/platform/editor/common/editor'; -import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import product from 'vs/platform/node/product'; interface ILegacyUse { @@ -30,10 +27,6 @@ function ignore(code: string, value: T = null): (err: any) => TPromise { return err => err.code === code ? TPromise.as(value) : TPromise.wrapError(err); } -function readOrEmpty(name: string): TPromise { - return pfs.readFile(name, 'utf8').then(null, ignore('ENOENT', '')); -} - const root = URI.parse(require.toUrl('')).fsPath; const source = path.resolve(root, '..', 'bin', 'code'); @@ -67,61 +60,28 @@ class InstallAction extends Action { return undefined; } - return this.checkLegacy() - .then(uses => { - if (uses.length > 0) { - const { file, lineNumber } = uses[0]; - const message = nls.localize( - 'exists', - "Please remove the alias referencing '{0}' in '{1}' (line {2}) and retry this action.", - product.darwinBundleIdentifier, - file, - lineNumber - ); - - const resource = URI.file(file); - const input = { resource }; - const actions = [ - new Action('inlineEdit', nls.localize('editFile', "Edit '{0}'", file), '', true, () => { - return this.editorService.openEditor(input).then(() => { - const message = nls.localize('again', "Please remove the '{0}' alias from '{1}' before continuing.", product.applicationName, file); - const actions = [ - new Action('continue', nls.localize('continue', "Continue"), '', true, () => this.run()), - new Action('cancel', nls.localize('cancel', "Cancel")) - ]; - - this.messageService.show(Severity.Info, { message, actions }); - }); - }) - ]; - - this.messageService.show(Severity.Warning, { message, actions }); + return this.isInstalled() + .then(isInstalled => { + if (!isAvailable || isInstalled) { return TPromise.as(null); - } - - return this.isInstalled() - .then(isInstalled => { - if (!isAvailable || isInstalled) { - return TPromise.as(null); - } else { - const createSymlink = () => { - return pfs.unlink(this.target) - .then(null, ignore('ENOENT')) - .then(() => pfs.symlink(source, this.target)); - }; - - return createSymlink().then(null, err => { - if (err.code === 'EACCES' || err.code === 'ENOENT') { - return this.createBinFolder() - .then(() => createSymlink()); - } - - return TPromise.wrapError(err); - }); + } else { + const createSymlink = () => { + return pfs.unlink(this.target) + .then(null, ignore('ENOENT')) + .then(() => pfs.symlink(source, this.target)); + }; + + return createSymlink().then(null, err => { + if (err.code === 'EACCES' || err.code === 'ENOENT') { + return this.createBinFolder() + .then(() => createSymlink()); } - }) - .then(() => this.messageService.show(Severity.Info, nls.localize('successIn', "Shell command '{0}' successfully installed in PATH.", product.applicationName))); - }); + + return TPromise.wrapError(err); + }); + } + }) + .then(() => this.messageService.show(Severity.Info, nls.localize('successIn', "Shell command '{0}' successfully installed in PATH.", product.applicationName))); }); } @@ -152,32 +112,6 @@ class InstallAction extends Action { this.messageService.show(Severity.Info, { message, actions }); }); } - - checkLegacy(): TPromise { - const files = [ - path.join(os.homedir(), '.bash_profile'), - path.join(os.homedir(), '.bashrc'), - path.join(os.homedir(), '.zshrc') - ]; - - return TPromise.join(files.map(f => readOrEmpty(f))).then(result => { - return result.reduce((result, contents, index) => { - const file = files[index]; - const lines = contents.split(/\r?\n/); - - lines.some((line, index) => { - if (line.indexOf(product.darwinBundleIdentifier) > -1 && !/^\s*#/.test(line)) { - result.push({ file, lineNumber: index + 1 }); - return true; - } - - return false; - }); - - return result; - }, [] as ILegacyUse[]); - }); - } } class UninstallAction extends Action { @@ -212,47 +146,10 @@ class UninstallAction extends Action { } } -class DarwinCLIHelper implements IWorkbenchContribution { - - constructor( - @IInstantiationService instantiationService: IInstantiationService, - @IMessageService messageService: IMessageService - ) { - const installAction = instantiationService.createInstance(InstallAction, InstallAction.ID, InstallAction.LABEL); - - isAvailable().done(isAvailable => { - if (!isAvailable) { - return; - } - - return installAction.checkLegacy().done(files => { - if (files.length > 0) { - const message = nls.localize('update', "Code needs to change the '{0}' shell command. Would you like to do this now?", product.applicationName); - const now = new Action('changeNow', nls.localize('changeNow', "Change Now"), '', true, () => installAction.run()); - const later = new Action('later', nls.localize('later', "Later"), '', true, () => { - messageService.show(Severity.Info, nls.localize('laterInfo', "Remember you can always run the '{0}' action from the Command Palette.", installAction.label)); - return null; - }); - const actions = [now, later]; - - messageService.show(Severity.Info, { message, actions }); - } - }); - }); - } - - getId(): string { - return 'darwin.cli'; - } -} - if (process.platform === 'darwin') { const category = nls.localize('shellCommand', "Shell Command"); const workbenchActionsRegistry = Registry.as(ActionExtensions.WorkbenchActions); workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(InstallAction, InstallAction.ID, InstallAction.LABEL), 'Shell Command: Install \'code\' command in PATH', category); workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(UninstallAction, UninstallAction.ID, UninstallAction.LABEL), 'Shell Command: Uninstall \'code\' command from PATH', category); - - const workbenchRegistry = Registry.as(WorkbenchExtensions.Workbench); - workbenchRegistry.registerWorkbenchContribution(DarwinCLIHelper); } -- GitLab