From 2a86f91debbaf7518af08cd3b32edbc761a3dd67 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 20 Apr 2016 14:56:39 +0200 Subject: [PATCH] wip: adopt ipc channels in git world --- src/vs/workbench/parts/git/common/gitIpc.ts | 34 +++++++++++++++++++ .../electron-browser/electronGitService.ts | 2 +- .../workbench/parts/git/node/rawGitService.ts | 32 +++++++++++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 src/vs/workbench/parts/git/common/gitIpc.ts diff --git a/src/vs/workbench/parts/git/common/gitIpc.ts b/src/vs/workbench/parts/git/common/gitIpc.ts new file mode 100644 index 00000000000..c5af59ff5e7 --- /dev/null +++ b/src/vs/workbench/parts/git/common/gitIpc.ts @@ -0,0 +1,34 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +import { TPromise } from 'vs/base/common/winjs.base'; +import { IChannel } from 'vs/base/parts/ipc/common/ipc'; +import { RawServiceState, IRawStatus, IPushOptions } from './git'; + +export interface IGitChannel extends IChannel { + call(command: 'getVersion'): TPromise; + call(command: 'serviceState'): TPromise; + call(command: 'status'): TPromise; + call(command: 'init'): TPromise; + call(command: 'add', filesPaths?: string[]): TPromise; + call(command: 'stage', filePath: string, content: string): TPromise; + call(command: 'branch', name: string, checkout?: boolean): TPromise; + call(command: 'checkout', treeish?: string, filePaths?: string[]): TPromise; + call(command: 'clean', filePaths: string[]): TPromise; + call(command: 'undo'): TPromise; + call(command: 'reset', treeish:string, hard?: boolean): TPromise; + call(command: 'revertFiles', treeish:string, filePaths?: string[]): TPromise; + call(command: 'fetch'): TPromise; + call(command: 'pull', rebase?: boolean): TPromise; + call(command: 'push', remote?: string, name?: string, options?: IPushOptions): TPromise; + call(command: 'sync'): TPromise; + call(command: 'commit', message:string, amend?: boolean, stage?: boolean): TPromise; + call(command: 'detectMimetypes', path: string, treeish?: string): TPromise; + call(command: 'show', path: string, treeish?: string): TPromise; + call(command: 'onOutput'): TPromise; + call(command: string, ...args: any[]): TPromise; +} diff --git a/src/vs/workbench/parts/git/electron-browser/electronGitService.ts b/src/vs/workbench/parts/git/electron-browser/electronGitService.ts index 9993ddb2806..7f2b099d107 100644 --- a/src/vs/workbench/parts/git/electron-browser/electronGitService.ts +++ b/src/vs/workbench/parts/git/electron-browser/electronGitService.ts @@ -139,7 +139,7 @@ function createNativeRawGitService(workspaceRoot: string, path: string, defaultE } ); - return client.getChannel('GitService', RawGitService); + return client.getChannel('git'); }, () => new UnavailableRawGitService()); } diff --git a/src/vs/workbench/parts/git/node/rawGitService.ts b/src/vs/workbench/parts/git/node/rawGitService.ts index 4fd9ca92a89..5e481de89da 100644 --- a/src/vs/workbench/parts/git/node/rawGitService.ts +++ b/src/vs/workbench/parts/git/node/rawGitService.ts @@ -10,6 +10,7 @@ import mime = require('vs/base/node/mime'); import pfs = require('vs/base/node/pfs'); import { Repository, GitError } from 'vs/workbench/parts/git/node/git.lib'; import { IRawGitService, RawServiceState, IRawStatus, IHead, GitErrorCodes, IPushOptions } from 'vs/workbench/parts/git/common/git'; +import { IGitChannel } from 'vs/workbench/parts/git/common/gitIpc'; export class RawGitService implements IRawGitService { @@ -262,4 +263,35 @@ export class DelayedRawGitService implements IRawGitService { public onOutput(): Promise { return this.raw.then(raw => raw.onOutput()); } +} + +export class GitChannel implements IGitChannel { + + constructor(private rawGitService: IRawGitService) { } + + call(command: string, ...args: any[]): TPromise { + switch (command) { + case 'getVersion': return this.rawGitService.getVersion(); + case 'serviceState': return this.rawGitService.serviceState(); + case 'status': return this.rawGitService.status(); + case 'status': return this.rawGitService.status(); + case 'init': return this.rawGitService.init(); + case 'add': return this.rawGitService.add(args[0]); + case 'stage': return this.rawGitService.stage(args[0], args[1]); + case 'branch': return this.rawGitService.branch(args[0], args[1]); + case 'checkout': return this.rawGitService.checkout(args[0], args[1]); + case 'clean': return this.rawGitService.clean(args[0]); + case 'undo': return this.rawGitService.undo(); + case 'reset': return this.rawGitService.reset(args[0], args[1]); + case 'revertFiles': return this.rawGitService.revertFiles(args[0], args[1]); + case 'fetch': return this.rawGitService.fetch(); + case 'pull': return this.rawGitService.pull(args[0]); + case 'push': return this.rawGitService.push(args[0], args[1], args[2]); + case 'sync': return this.rawGitService.sync(); + case 'commit': return this.rawGitService.commit(args[0], args[1], args[2]); + case 'detectMimetypes': return this.rawGitService.detectMimetypes(args[0], args[1]); + case 'show': return this.rawGitService.show(args[0], args[1]); + case 'onOutput': return this.rawGitService.onOutput(); + } + } } \ No newline at end of file