Skip to content

Commit 13924e8

Browse files
authored
Scaffold deployWorkspaceProject command and add open workspace logic (#447)
1 parent 9c0c90f commit 13924e8

18 files changed

+223
-23
lines changed

package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,11 @@
8686
"title": "%containerApps.deployImageApi%",
8787
"category": "Azure Container Apps"
8888
},
89+
{
90+
"command": "containerApps.deployWorkspaceProject",
91+
"title": "%containerApps.deployWorkspaceProject%",
92+
"category": "Azure Container Apps"
93+
},
8994
{
9095
"command": "containerApps.deleteContainerApp",
9196
"title": "%containerApps.deleteContainerApp%",
@@ -230,7 +235,34 @@
230235
"category": "Azure Container Apps"
231236
}
232237
],
238+
"submenus": [
239+
{
240+
"id": "containerApps.submenus.workspaceActions",
241+
"label": "Azure Container Apps",
242+
"icon": {
243+
"light": "resources/azure-containerapps.svg",
244+
"dark": "resources/azure-containerapps.svg"
245+
}
246+
}
247+
],
233248
"menus": {
249+
"containerApps.submenus.workspaceActions": [
250+
{
251+
"command": "containerApps.deployWorkspaceProject",
252+
"group": "1_deploy@1"
253+
},
254+
{
255+
"command": "containerApps.createContainerApp",
256+
"group": "2_create@1"
257+
}
258+
],
259+
"view/title": [
260+
{
261+
"submenu": "containerApps.submenus.workspaceActions",
262+
"when": "view == azureWorkspace",
263+
"group": "navigation@4"
264+
}
265+
],
234266
"view/item/context": [
235267
{
236268
"command": "containerApps.createManagedEnvironment",
@@ -518,7 +550,7 @@
518550
"@azure/storage-blob": "^12.4.1",
519551
"@microsoft/vscode-azext-azureutils": "^2.0.0",
520552
"@microsoft/vscode-azext-github": "^1.0.0",
521-
"@microsoft/vscode-azext-utils": "^2.0.0",
553+
"@microsoft/vscode-azext-utils": "^2.0.5",
522554
"@microsoft/vscode-azureresources-api": "^2.0.2",
523555
"buffer": "^6.0.3",
524556
"dayjs": "^1.11.3",

package.nls.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"containerApps.editContainerApp": "Edit Container App (Advanced)...",
1010
"containerApps.deployImage": "Update Container App Image...",
1111
"containerApps.deployImageApi": "Update Container App Image (API)...",
12+
"containerApps.deployWorkspaceProject": "Deploy Project from Workspace...",
1213
"containerApps.deleteContainerApp": "Delete Container App...",
1314
"containerApps.disableIngress": "Disable Ingress for Container App",
1415
"containerApps.enableIngress": "Enable Ingress for Container App...",

src/commands/createContainerApp/ContainerAppNameStep.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { ContainerAppsAPIClient } from "@azure/arm-appcontainers";
77
import { getResourceGroupFromId } from "@microsoft/vscode-azext-azureutils";
8-
import { AzureWizardPromptStep } from "@microsoft/vscode-azext-utils";
8+
import { AzureWizardPromptStep, nonNullProp } from "@microsoft/vscode-azext-utils";
99
import { createContainerAppsAPIClient } from '../../utils/azureClients';
1010
import { localize } from "../../utils/localize";
1111
import { ICreateContainerAppContext } from './ICreateContainerAppContext';
@@ -41,7 +41,7 @@ export class ContainerAppNameStep extends AzureWizardPromptStep<ICreateContainer
4141
// do the API call last
4242
try {
4343
const client: ContainerAppsAPIClient = await createContainerAppsAPIClient(context);
44-
const managedEnvironmentRg = getResourceGroupFromId(context.managedEnvironmentId);
44+
const managedEnvironmentRg = getResourceGroupFromId(nonNullProp(context, 'managedEnvironmentId'));
4545
await client.containerApps.get(managedEnvironmentRg, name);
4646
return localize('containerAppExists', 'The container app "{0}" already exists in resource group "{1}". Please enter a unique name.', name, managedEnvironmentRg);
4747
} catch (err) {

src/commands/createContainerApp/ICreateContainerAppContext.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6+
import type { ManagedEnvironment } from '@azure/arm-appcontainers';
67
import type { IResourceGroupWizardContext } from '@microsoft/vscode-azext-azureutils';
78
import type { ExecuteActivityContext } from '@microsoft/vscode-azext-utils';
89
import type { IContainerAppContext } from '../IContainerAppContext';
910
import type { ImageSourceBaseContext } from '../deployImage/imageSource/ImageSourceBaseContext';
1011
import type { IngressContext } from '../ingress/IngressContext';
1112

1213
export interface ICreateContainerAppContext extends IResourceGroupWizardContext, ImageSourceBaseContext, IngressContext, IContainerAppContext, ExecuteActivityContext {
13-
managedEnvironmentId: string;
1414
newContainerAppName?: string;
15+
16+
managedEnvironmentId?: string;
17+
managedEnvironment?: ManagedEnvironment;
1518
}

src/commands/createManagedEnvironment/IManagedEnvironmentContext.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66
import { ManagedEnvironment } from "@azure/arm-appcontainers";
77
import { Workspace } from '@azure/arm-operationalinsights';
88
import { IResourceGroupWizardContext } from '@microsoft/vscode-azext-azureutils';
9-
import { ExecuteActivityContext } from '@microsoft/vscode-azext-utils';
9+
import { ExecuteActivityContext, ISubscriptionActionContext } from '@microsoft/vscode-azext-utils';
10+
import { AzureSubscription } from "@microsoft/vscode-azureresources-api";
11+
12+
export interface IManagedEnvironmentContext extends ISubscriptionActionContext, IResourceGroupWizardContext, ExecuteActivityContext {
13+
subscription: AzureSubscription;
1014

11-
export interface IManagedEnvironmentContext extends IResourceGroupWizardContext, ExecuteActivityContext {
1215
newManagedEnvironmentName?: string;
1316
logAnalyticsWorkspace?: Workspace;
1417

src/commands/createManagedEnvironment/createManagedEnvironment.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { LocationListStep, ResourceGroupCreateStep, VerifyProvidersStep } from "@microsoft/vscode-azext-azureutils";
7-
import { AzureWizard, AzureWizardExecuteStep, AzureWizardPromptStep, createSubscriptionContext, IActionContext, nonNullProp, subscriptionExperience } from "@microsoft/vscode-azext-utils";
7+
import { AzureWizard, AzureWizardExecuteStep, AzureWizardPromptStep, IActionContext, createSubscriptionContext, nonNullProp, subscriptionExperience } from "@microsoft/vscode-azext-utils";
88
import { AzureSubscription } from "@microsoft/vscode-azureresources-api";
99
import { ext } from "../../extensionVariables";
1010
import { createActivityContext } from "../../utils/activityUtils";
@@ -20,7 +20,8 @@ export async function createManagedEnvironment(context: IActionContext, node?: {
2020
const wizardContext: IManagedEnvironmentContext = {
2121
...context,
2222
...createSubscriptionContext(subscription),
23-
...(await createActivityContext())
23+
...(await createActivityContext()),
24+
subscription
2425
};
2526

2627
const title: string = localize('createManagedEnv', 'Create Container Apps environment');

src/commands/deployImage/imageSource/buildImageInAzure/DockerFileItemStep.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ import type { IBuildImageInAzureContext } from "./IBuildImageInAzureContext";
1111

1212
export class DockerFileItemStep extends AzureWizardPromptStep<IBuildImageInAzureContext> {
1313
public async prompt(context: IBuildImageInAzureContext): Promise<void> {
14-
context.dockerFilePath = await selectWorkspaceFile(context, localize('dockerFilePick', 'Select a Dockerfile'), { filters: {} }, DOCKERFILE_GLOB_PATTERN);
14+
context.dockerfilePath = await selectWorkspaceFile(context, localize('dockerFilePick', 'Select a Dockerfile'), { filters: {} }, DOCKERFILE_GLOB_PATTERN);
1515
}
1616

1717
public shouldPrompt(context: IBuildImageInAzureContext): boolean {
18-
return !context.dockerFilePath;
18+
return !context.dockerfilePath;
1919
}
2020
}

src/commands/deployImage/imageSource/buildImageInAzure/IBuildImageInAzureContext.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { IContainerRegistryImageContext } from '../containerRegistry/IContainerR
99

1010
export interface IBuildImageInAzureContext extends IContainerRegistryImageContext {
1111
rootFolder: vscode.WorkspaceFolder;
12-
dockerFilePath: string;
12+
dockerfilePath: string;
1313
imageName: string;
1414
os: 'Windows' | 'Linux';
1515

src/commands/deployImage/imageSource/buildImageInAzure/ImageNameStep.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import type { IBuildImageInAzureContext } from "./IBuildImageInAzureContext";
1010

1111
export class ImageNameStep extends AzureWizardPromptStep<IBuildImageInAzureContext> {
1212
public async prompt(context: IBuildImageInAzureContext): Promise<void> {
13-
const suggestedImageName = await getSuggestedName(context, context.dockerFilePath);
13+
const suggestedImageName = await getSuggestedName(context, context.dockerfilePath);
1414

1515
context.imageName = await context.ui.showInputBox({
1616
prompt: localize('imageNamePrompt', 'Enter a name for the image'),

0 commit comments

Comments
 (0)