mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-14 01:25:37 -05:00
* 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
85 lines
4.1 KiB
TypeScript
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 {
|
|
|
|
}
|