mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-22 17:22:59 -05:00
* work in progress * load projects in view and test cases * update scope * make the sql proj menu available in workspace view * add extension unit test * address comments * fix errors
46 lines
1.6 KiB
TypeScript
46 lines
1.6 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import { IProjectProvider } from 'dataworkspace';
|
|
import * as vscode from 'vscode';
|
|
import { IProjectProviderRegistry } from './interfaces';
|
|
|
|
export const ProjectProviderRegistry: IProjectProviderRegistry = new class implements IProjectProviderRegistry {
|
|
private _providers = new Array<IProjectProvider>();
|
|
private _providerMapping: { [key: string]: IProjectProvider } = {};
|
|
|
|
registerProvider(provider: IProjectProvider): vscode.Disposable {
|
|
this.validateProvider(provider);
|
|
this._providers.push(provider);
|
|
provider.supportedProjectTypes.forEach(projectType => {
|
|
this._providerMapping[projectType.projectFileExtension.toUpperCase()] = provider;
|
|
});
|
|
return new vscode.Disposable(() => {
|
|
const idx = this._providers.indexOf(provider);
|
|
if (idx >= 0) {
|
|
this._providers.splice(idx, 1);
|
|
provider.supportedProjectTypes.forEach(projectType => {
|
|
delete this._providerMapping[projectType.projectFileExtension.toUpperCase()];
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
get providers(): IProjectProvider[] {
|
|
return this._providers.slice(0);
|
|
}
|
|
|
|
clear(): void {
|
|
this._providers.length = 0;
|
|
}
|
|
|
|
validateProvider(provider: IProjectProvider): void {
|
|
}
|
|
|
|
getProviderByProjectType(projectType: string): IProjectProvider | undefined {
|
|
return projectType ? this._providerMapping[projectType.toUpperCase()] : undefined;
|
|
}
|
|
};
|