extensionManagementIpc.ts 3.4 KB
Newer Older
J
Joao Moreno 已提交
1 2 3 4 5 6 7 8 9
/*---------------------------------------------------------------------------------------------
 *  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, eventToCall, eventFromCall } from 'vs/base/parts/ipc/common/ipc';
J
Joao Moreno 已提交
10
import { IExtensionManagementService, ILocalExtension, IGalleryExtension, DidInstallExtensionEvent } from './extensionManagement';
J
Joao Moreno 已提交
11 12
import Event from 'vs/base/common/event';

J
Joao Moreno 已提交
13
export interface IExtensionManagementChannel extends IChannel {
J
Joao Moreno 已提交
14 15 16 17
	call(command: 'event:onInstallExtension'): TPromise<void>;
	call(command: 'event:onDidInstallExtension'): TPromise<void>;
	call(command: 'event:onUninstallExtension'): TPromise<void>;
	call(command: 'event:onDidUninstallExtension'): TPromise<void>;
J
Joao Moreno 已提交
18 19 20
	call(command: 'install', extensionOrPath: ILocalExtension | string): TPromise<ILocalExtension>;
	call(command: 'uninstall', extension: ILocalExtension): TPromise<void>;
	call(command: 'getInstalled', includeDuplicateVersions: boolean): TPromise<ILocalExtension[]>;
J
Joao Moreno 已提交
21
	call(command: string, arg: any): TPromise<any>;
J
Joao Moreno 已提交
22 23
}

J
Joao Moreno 已提交
24
export class ExtensionManagementChannel implements IExtensionManagementChannel {
J
Joao Moreno 已提交
25

J
Joao Moreno 已提交
26
	constructor(private service: IExtensionManagementService) { }
J
Joao Moreno 已提交
27

J
Joao Moreno 已提交
28
	call(command: string, arg: any): TPromise<any> {
J
Joao Moreno 已提交
29 30 31 32 33
		switch (command) {
			case 'event:onInstallExtension': return eventToCall(this.service.onInstallExtension);
			case 'event:onDidInstallExtension': return eventToCall(this.service.onDidInstallExtension);
			case 'event:onUninstallExtension': return eventToCall(this.service.onUninstallExtension);
			case 'event:onDidUninstallExtension': return eventToCall(this.service.onDidUninstallExtension);
J
Joao Moreno 已提交
34 35 36
			case 'install': return this.service.install(arg);
			case 'uninstall': return this.service.uninstall(arg);
			case 'getInstalled': return this.service.getInstalled(arg);
J
Joao Moreno 已提交
37 38 39 40
		}
	}
}

J
Joao Moreno 已提交
41
export class ExtensionManagementChannelClient implements IExtensionManagementService {
J
Joao Moreno 已提交
42

J
Joao Moreno 已提交
43
	serviceId = IExtensionManagementService;
J
Joao Moreno 已提交
44

J
Joao Moreno 已提交
45
	constructor(private channel: IExtensionManagementChannel) { }
J
Joao Moreno 已提交
46

J
Joao Moreno 已提交
47 48
	private _onInstallExtension = eventFromCall<string>(this.channel, 'event:onInstallExtension');
	get onInstallExtension(): Event<string> { return this._onInstallExtension; }
J
Joao Moreno 已提交
49

J
Joao Moreno 已提交
50 51
	private _onDidInstallExtension = eventFromCall<DidInstallExtensionEvent>(this.channel, 'event:onDidInstallExtension');
	get onDidInstallExtension(): Event<DidInstallExtensionEvent> { return this._onDidInstallExtension; }
J
Joao Moreno 已提交
52

J
Joao Moreno 已提交
53 54
	private _onUninstallExtension = eventFromCall<string>(this.channel, 'event:onUninstallExtension');
	get onUninstallExtension(): Event<string> { return this._onUninstallExtension; }
J
Joao Moreno 已提交
55

J
Joao Moreno 已提交
56 57
	private _onDidUninstallExtension = eventFromCall<string>(this.channel, 'event:onDidUninstallExtension');
	get onDidUninstallExtension(): Event<string> { return this._onDidUninstallExtension; }
J
Joao Moreno 已提交
58

J
Joao Moreno 已提交
59
	install(extension: IGalleryExtension): TPromise<void>;
J
Joao Moreno 已提交
60 61
	install(zipPath: string): TPromise<void>;
	install(arg: any): TPromise<void> {
J
Joao Moreno 已提交
62 63 64
		return this.channel.call('install', arg);
	}

J
Joao Moreno 已提交
65
	uninstall(extension: ILocalExtension): TPromise<void> {
J
Joao Moreno 已提交
66 67 68
		return this.channel.call('uninstall', extension);
	}

J
Joao Moreno 已提交
69
	getInstalled(includeDuplicateVersions?: boolean): TPromise<ILocalExtension[]> {
J
Joao Moreno 已提交
70 71 72
		return this.channel.call('getInstalled', includeDuplicateVersions);
	}
}