diff --git a/src/commands/addBinding/settingSteps/AzureConnectionCreateStepBase.ts b/src/commands/addBinding/settingSteps/AzureConnectionCreateStepBase.ts index 0254eddba..9a8a0507e 100644 --- a/src/commands/addBinding/settingSteps/AzureConnectionCreateStepBase.ts +++ b/src/commands/addBinding/settingSteps/AzureConnectionCreateStepBase.ts @@ -8,23 +8,24 @@ import { type Progress } from 'vscode'; import { setLocalAppSetting } from '../../../funcConfig/local.settings'; import { localize } from '../../../localize'; import { type IBindingSetting } from '../../../templates/IBindingTemplate'; -import { nonNullProp } from '../../../utils/nonNull'; -import { setBindingSetting } from '../../createFunction/IFunctionWizardContext'; -import { type IBindingWizardContext } from '../IBindingWizardContext'; +import { type ParsedInput } from '../../../templates/script/parseScriptTemplatesV2'; +import { setBindingSetting, type IFunctionWizardContext } from '../../createFunction/IFunctionWizardContext'; export interface IConnection { name: string; connectionString: string; } -export abstract class AzureConnectionCreateStepBase extends AzureWizardExecuteStep { +export abstract class AzureConnectionCreateStepBase extends AzureWizardExecuteStep { public priority: number = 200; - private readonly _setting: IBindingSetting; + private readonly _setting: IBindingSetting | ParsedInput; + private readonly _resourceType: string; - constructor(setting: IBindingSetting) { + constructor(setting: IBindingSetting | ParsedInput) { super(); this._setting = setting; + this._resourceType = (setting as IBindingSetting).resourceType ?? (setting as ParsedInput).resource ?? ''; } public abstract getConnection(context: T): Promise; @@ -33,7 +34,7 @@ export abstract class AzureConnectionCreateStepBase { - protected readonly _setting: IBindingSetting; +export abstract class BindingSettingStepBase extends AzureWizardPromptStep { + protected readonly _setting: IBindingSetting | ParsedInput; + protected readonly _resourceType: string; - constructor(setting: IBindingSetting) { + constructor(setting: IBindingSetting | ParsedInput) { super(); this._setting = setting; this.id = setting.name; + this._resourceType = (setting as IBindingSetting).resourceType ?? (setting as ParsedInput).resource ?? ''; } - public abstract promptCore(context: IBindingWizardContext): Promise; + public abstract promptCore(context: IFunctionWizardContext): Promise; - public async prompt(context: IBindingWizardContext): Promise { + public async prompt(context: IFunctionWizardContext): Promise { setBindingSetting(context, this._setting, await this.promptCore(context)); } - public shouldPrompt(context: IBindingWizardContext): boolean { + public shouldPrompt(context: IFunctionWizardContext): boolean { return !getBindingSetting(context, this._setting); } } diff --git a/src/commands/addBinding/settingSteps/BooleanPromptStep.ts b/src/commands/addBinding/settingSteps/BooleanPromptStep.ts index 4113b77ed..08af3cb15 100644 --- a/src/commands/addBinding/settingSteps/BooleanPromptStep.ts +++ b/src/commands/addBinding/settingSteps/BooleanPromptStep.ts @@ -5,6 +5,7 @@ import { type IAzureQuickPickItem } from "@microsoft/vscode-azext-utils"; import { type BindingSettingValue } from "../../../funcConfig/function"; +import { type IBindingSetting } from "../../../templates/IBindingTemplate"; import { envUtils } from "../../../utils/envUtils"; import { type IBindingWizardContext } from "../IBindingWizardContext"; import { BindingSettingStepBase } from "./BindingSettingStepBase"; @@ -18,6 +19,6 @@ export class BooleanPromptStep extends BindingSettingStepBase { picks = picks.reverse(); } - return (await context.ui.showQuickPick(picks, { placeHolder: this._setting.description || this._setting.label })).data; + return (await context.ui.showQuickPick(picks, { placeHolder: (this._setting as IBindingSetting).description || this._setting.label })).data; } } diff --git a/src/commands/addBinding/settingSteps/EnumPromptStep.ts b/src/commands/addBinding/settingSteps/EnumPromptStep.ts index 06478e374..b1af7fa78 100644 --- a/src/commands/addBinding/settingSteps/EnumPromptStep.ts +++ b/src/commands/addBinding/settingSteps/EnumPromptStep.ts @@ -5,10 +5,14 @@ import { type IAzureQuickPickItem } from "@microsoft/vscode-azext-utils"; import { type BindingSettingValue } from "../../../funcConfig/function"; +import { type IBindingSetting } from "../../../templates/IBindingTemplate"; import { type IBindingWizardContext } from "../IBindingWizardContext"; import { BindingSettingStepBase } from "./BindingSettingStepBase"; export class EnumPromptStep extends BindingSettingStepBase { + // not used by v2 schema so enforce IBindingSetting + protected readonly _setting: IBindingSetting; + public async promptCore(context: IBindingWizardContext): Promise { const picks: IAzureQuickPickItem[] = this._setting.enums.map(e => { return { data: e.value, label: e.displayName }; }); return (await context.ui.showQuickPick(picks, { placeHolder: this._setting.label })).data; diff --git a/src/commands/addBinding/settingSteps/LocalAppSettingCreateStep.ts b/src/commands/addBinding/settingSteps/LocalAppSettingCreateStep.ts index 706484f2f..d22908767 100644 --- a/src/commands/addBinding/settingSteps/LocalAppSettingCreateStep.ts +++ b/src/commands/addBinding/settingSteps/LocalAppSettingCreateStep.ts @@ -9,17 +9,18 @@ import { localSettingsFileName } from '../../../constants'; import { setLocalAppSetting } from '../../../funcConfig/local.settings'; import { localize } from '../../../localize'; import { type IBindingSetting } from '../../../templates/IBindingTemplate'; +import { type ParsedInput } from '../../../templates/script/parseScriptTemplatesV2'; import { nonNullProp, nonNullValue } from '../../../utils/nonNull'; -import { getBindingSetting } from '../../createFunction/IFunctionWizardContext'; +import { getBindingSetting, setBindingSetting } from '../../createFunction/IFunctionWizardContext'; import { type IBindingWizardContext } from '../IBindingWizardContext'; export class LocalAppSettingCreateStep extends AzureWizardExecuteStep { public priority: number = 210; - private readonly _setting: IBindingSetting; + private readonly _setting: IBindingSetting | ParsedInput; private readonly _valueKey: string; - constructor(setting: IBindingSetting, valueKey: string) { + constructor(setting: IBindingSetting | ParsedInput, valueKey: string) { super(); this._setting = setting; this._valueKey = valueKey; @@ -29,6 +30,10 @@ export class LocalAppSettingCreateStep extends AzureWizardExecuteStep