diff --git a/extensions/sql-bindings/.eslintrc.json b/extensions/sql-bindings/.eslintrc.json index a617490989..edbc8cfea5 100644 --- a/extensions/sql-bindings/.eslintrc.json +++ b/extensions/sql-bindings/.eslintrc.json @@ -8,6 +8,7 @@ { "ignoreVoid": true } - ] + ], + "jsdoc/require-param": "error" } } diff --git a/extensions/sql-bindings/src/common/azureFunctionsUtils.ts b/extensions/sql-bindings/src/common/azureFunctionsUtils.ts index beb5f8d331..a5a713ef6c 100644 --- a/extensions/sql-bindings/src/common/azureFunctionsUtils.ts +++ b/extensions/sql-bindings/src/common/azureFunctionsUtils.ts @@ -41,7 +41,7 @@ export async function getLocalSettingsJson(localSettingsPath: string): Promise { const settingsFile = await getSettingsFile(projectFile); diff --git a/extensions/sql-bindings/src/common/constants.ts b/extensions/sql-bindings/src/common/constants.ts index 4fb88d00c1..a5ab61200b 100644 --- a/extensions/sql-bindings/src/common/constants.ts +++ b/extensions/sql-bindings/src/common/constants.ts @@ -29,7 +29,7 @@ export const selectAzureFunctionProjFolder = localize('selectAzureFunctionProjFo export const timeoutExtensionError = localize('timeoutExtensionError', 'Timed out waiting for extension to install'); export const timeoutAzureFunctionFileError = localize('timeoutAzureFunctionFileError', 'Timed out waiting for Azure Function file to be created'); export const timeoutProjectError = localize('timeoutProjectError', 'Timed out waiting for project to be created'); -export const errorNewAzureFunction = localize('errorNewAzureFunction', 'Error creating new Azure Function: {0}'); +export function errorNewAzureFunction(error: any): string { return localize('errorNewAzureFunction', 'Error creating new Azure Function: {0}', utils.getErrorMessage(error)); } export const azureFunctionsExtensionNotInstalled = localize('azureFunctionsExtensionNotInstalled', 'Azure Functions extension must be installed in order to use this feature.'); export const azureFunctionsProjectMustBeOpened = localize('azureFunctionsProjectMustBeOpened', 'A C# Azure Functions project must be present in order to create a new Azure Function for this table.'); export const needConnection = localize('needConnection', 'A connection is required to use Azure Function with SQL Binding'); @@ -69,7 +69,7 @@ export const enterConnectionString = localize('enterConnectionString', "Enter co export const saveChangesInFile = localize('saveChangesInFile', "There are unsaved changes in the current file. Save now?"); export const save = localize('save', "Save"); export function settingAlreadyExists(settingName: string): string { return localize('SettingAlreadyExists', 'Local app setting \'{0}\' already exists. Overwrite?', settingName); } -export function failedToParse(errorMessage: string): string { return localize('failedToParse', 'Failed to parse "{0}": {1}.', azureFunctionLocalSettingsFileName, errorMessage); } +export function failedToParse(filename: string, error: any): string { return localize('failedToParse', 'Failed to parse "{0}": {1}.', filename, utils.getErrorMessage(error)); } export function jsonParseError(error: string, line: number, column: number): string { return localize('jsonParseError', '{0} near line "{1}", column "{2}"', error, line, column); } export const moreInformation = localize('moreInformation', "More Information"); export const addPackageReferenceMessage = localize('addPackageReferenceMessage', 'To use SQL bindings, ensure your Azure Functions project has a reference to {0}', sqlExtensionPackageName); diff --git a/extensions/sql-bindings/src/common/utils.ts b/extensions/sql-bindings/src/common/utils.ts index 5c7cd9f2ce..c111836a35 100644 --- a/extensions/sql-bindings/src/common/utils.ts +++ b/extensions/sql-bindings/src/common/utils.ts @@ -28,6 +28,7 @@ export class TimeoutError extends Error { } /** * Consolidates on the error message string + * @param error The error object to get the message from */ export function getErrorMessage(error: any): string { return (error instanceof Error) @@ -94,24 +95,6 @@ export async function getAllProjectsInFolder(folder: vscode.Uri, projectExtensio return (await glob(projFilter)).map(p => vscode.Uri.file(path.resolve(p))); } -/** - * Format a string. Behaves like C#'s string.Format() function. - */ -export function formatString(str: string, ...args: any[]): string { - // This is based on code originally from https://github.com/Microsoft/vscode/blob/master/src/vs/nls.js - // License: https://github.com/Microsoft/vscode/blob/master/LICENSE.txt - let result: string; - if (args.length === 0) { - result = str; - } else { - result = str.replace(/\{(\d+)\}/g, (match, rest) => { - let index = rest[0]; - return typeof args[index] !== 'undefined' ? args[index] : match; - }); - } - return result; -} - /** * Generates a quoted full name for the object * @param schema of the object diff --git a/extensions/sql-bindings/src/services/azureFunctionsService.ts b/extensions/sql-bindings/src/services/azureFunctionsService.ts index a324999cfe..000aa596e2 100644 --- a/extensions/sql-bindings/src/services/azureFunctionsService.ts +++ b/extensions/sql-bindings/src/services/azureFunctionsService.ts @@ -199,7 +199,7 @@ export async function createAzureFunction(node?: ITreeNodeInfo): Promise { } else { // else an error would occur during the createFunction exitReason = 'error'; - void vscode.window.showErrorMessage(utils.formatString(constants.errorNewAzureFunction, error.message ?? error)); + void vscode.window.showErrorMessage(constants.errorNewAzureFunction(error)); } TelemetryReporter.createErrorEvent(TelemetryViews.CreateAzureFunctionWithSqlBinding, TelemetryActions.exitCreateAzureFunctionQuickpick, undefined, errorType) .withAdditionalProperties(propertyBag).send();