Files
azuredatastudio/extensions/resource-deployment/src/main.ts
Aasim Khan 712c6ae5d8 Adding tools and Eula page to Resource Deployment (#13182)
* SQL VM wizard migration to ResourceType Wizard

* Revert "SQL VM wizard migration to ResourceType Wizard"

This reverts commit e58cd47707a7e2812be20d915f1fe638b96b035f.

* migrated notebook wizard

* SQL VM wizard migration to ResourceType Wizard

* Fixed some imports on SQL VM wizard

* migrated sqldb wizard to generic ResourceTypeWizard

* Added missing import
Solving errors from the merge

* Moved some common functionality into ResourceTypeWizard

* Changed logic of start deployment

* fixed some import after changing files.

* added pagelss model and tools and Eula Page

* Hacky solution to fix wizard update bugs

* Removed tools and Eula components from resourceTypePickerDialog

* Removing changes in ext host

* reverting every change in ext host dialog

* Fixed setting the first provider for resourceTypeWizard.

* Some PR related changes
-Fixed typo in localized constants
-made some code logic concise
-Removed unnecessary check in tools&Eula

* Added some fixes for compilation error

* some refactoring for PRs

* moved comment

* cleaning up some code to make it more readable

* fixed comment typo

* Some additional cleaning up of code.

* Adding a public getter for model

* -Adding error message for failed EULA validation
-Removed unnecessary check for selected resource.

* Added comment to explain model variable behavior

* Added additional comments

* Fixed a comment to make it accurate

* Better phrasing for a comment
2020-11-06 13:05:41 -08:00

85 lines
4.1 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 * as vscode from 'vscode';
import * as nls from 'vscode-nls';
import { NotebookBasedDialogInfo } from './interfaces';
import { NotebookService } from './services/notebookService';
import { PlatformService } from './services/platformService';
import { ResourceTypeService } from './services/resourceTypeService';
import { ToolsService } from './services/toolsService';
import { DeploymentInputDialog } from './ui/deploymentInputDialog';
import { ResourceTypePickerDialog } from './ui/resourceTypePickerDialog';
import * as rd from 'resource-deployment';
import { getExtensionApi } from './api';
const localize = nls.loadMessageBundle();
export async function activate(context: vscode.ExtensionContext): Promise<rd.IExtension> {
const platformService = new PlatformService(context.globalStoragePath);
await platformService.initialize();
const toolsService = new ToolsService(platformService);
const notebookService = new NotebookService(platformService, context.extensionPath);
const resourceTypeService = new ResourceTypeService(platformService, toolsService, notebookService);
const resourceTypes = resourceTypeService.getResourceTypes();
const validationFailures = resourceTypeService.validateResourceTypes(resourceTypes);
if (validationFailures.length !== 0) {
const errorMessage = localize('resourceDeployment.FailedToLoadExtension', "Failed to load extension: {0}, Error detected in the resource type definition in package.json, check debug console for details.", context.extensionPath);
vscode.window.showErrorMessage(errorMessage);
validationFailures.forEach(message => console.error(message));
return <any>undefined;
}
/**
* Opens a new ResourceTypePickerDialog
* @param defaultResourceTypeName The resource type name to have selected by default
* @param resourceTypeNameFilters Optional filters to apply to the resource types displayed. If undefined all
* resource types will be displayed
*/
const openDialog = (defaultResourceTypeName: string, resourceTypeNameFilters?: string[]) => {
const defaultResourceType = resourceTypes.find(resourceType => resourceType.name === defaultResourceTypeName);
if (!defaultResourceType) {
vscode.window.showErrorMessage(localize('resourceDeployment.UnknownResourceType', "The resource type: {0} is not defined", defaultResourceTypeName));
} else {
const dialog = new ResourceTypePickerDialog(resourceTypeService, defaultResourceType, resourceTypeNameFilters);
dialog.open();
}
};
vscode.commands.registerCommand('azdata.resource.sql-image.deploy', () => {
openDialog('sql-image');
});
vscode.commands.registerCommand('azdata.resource.sql-bdc.deploy', () => {
openDialog('sql-bdc');
});
vscode.commands.registerCommand('azdata.resource.deploy', (defaultResourceTypeName?: string, resourceTypeNameFilters?: string[]) => {
if ((resourceTypeNameFilters && !Array.isArray(resourceTypeNameFilters) ||
(resourceTypeNameFilters && resourceTypeNameFilters.length > 0 && typeof resourceTypeNameFilters[0] !== 'string'))) {
throw new Error('resourceTypeNameFilters must either be undefined or an array of strings');
}
if (typeof defaultResourceTypeName === 'string') {
openDialog(defaultResourceTypeName, resourceTypeNameFilters);
} else {
let defaultDeploymentType: string;
if (platformService.platform() === 'win32') {
defaultDeploymentType = 'sql-windows-setup';
} else {
defaultDeploymentType = 'sql-image';
}
openDialog(defaultDeploymentType, resourceTypeNameFilters);
}
});
vscode.commands.registerCommand('azdata.openNotebookInputDialog', (dialogInfo: NotebookBasedDialogInfo) => {
const dialog = new DeploymentInputDialog(notebookService, platformService, toolsService, dialogInfo);
dialog.open();
});
return getExtensionApi();
}
// this method is called when your extension is deactivated
export function deactivate(): void {
}