diff --git a/packages/amazonq/package.json b/packages/amazonq/package.json index c6de334b093..ae9d879f753 100644 --- a/packages/amazonq/package.json +++ b/packages/amazonq/package.json @@ -1387,26 +1387,61 @@ "fontCharacter": "\\f1e0" } }, - "aws-schemas-registry": { + "aws-sagemakerunifiedstudio-catalog": { "description": "AWS Contributed Icon", "default": { "fontPath": "./resources/fonts/aws-toolkit-icons.woff", "fontCharacter": "\\f1e1" } }, - "aws-schemas-schema": { + "aws-sagemakerunifiedstudio-spaces": { "description": "AWS Contributed Icon", "default": { "fontPath": "./resources/fonts/aws-toolkit-icons.woff", "fontCharacter": "\\f1e2" } }, - "aws-stepfunctions-preview": { + "aws-sagemakerunifiedstudio-spaces-dark": { "description": "AWS Contributed Icon", "default": { "fontPath": "./resources/fonts/aws-toolkit-icons.woff", "fontCharacter": "\\f1e3" } + }, + "aws-sagemakerunifiedstudio-symbol-int": { + "description": "AWS Contributed Icon", + "default": { + "fontPath": "./resources/fonts/aws-toolkit-icons.woff", + "fontCharacter": "\\f1e4" + } + }, + "aws-sagemakerunifiedstudio-table": { + "description": "AWS Contributed Icon", + "default": { + "fontPath": "./resources/fonts/aws-toolkit-icons.woff", + "fontCharacter": "\\f1e5" + } + }, + "aws-schemas-registry": { + "description": "AWS Contributed Icon", + "default": { + "fontPath": "./resources/fonts/aws-toolkit-icons.woff", + "fontCharacter": "\\f1e6" + } + }, + "aws-schemas-schema": { + "description": "AWS Contributed Icon", + "default": { + "fontPath": "./resources/fonts/aws-toolkit-icons.woff", + "fontCharacter": "\\f1e7" + } + }, + "aws-stepfunctions-preview": { + "description": "AWS Contributed Icon", + "default": { + "fontPath": "./resources/fonts/aws-toolkit-icons.woff", + "fontCharacter": "\\f1e8" + } } }, "walkthroughs": [ diff --git a/packages/core/package.nls.json b/packages/core/package.nls.json index bcb17a5bdb0..9e5c91e39e8 100644 --- a/packages/core/package.nls.json +++ b/packages/core/package.nls.json @@ -476,7 +476,8 @@ "AWS.toolkit.lambda.walkthrough.title": "Get started building your application", "AWS.toolkit.lambda.walkthrough.description": "Your quick guide to build an application visually, iterate locally, and deploy to the cloud!", "AWS.toolkit.lambda.walkthrough.toolInstall.title": "Complete installation", - "AWS.toolkit.lambda.walkthrough.toolInstall.description": "Manage your AWS services and resources with the AWS Command Line Interface (AWS CLI). \n\n[Install AWS CLI](command:aws.toolkit.installAWSCLI)\n\nBuild locally, invoke, and deploy your functions with the Serverless Application Model (SAM) CLI. \n\n[Install SAM CLI](command:aws.toolkit.installSAMCLI)\n\nDocker is an optional, third party tool that assists with local AWS Lambda runtime emulation. Docker is required to invoke Lambda functions on your local machine. \n\n[Install Docker (optional)](command:aws.toolkit.installDocker)\n\nEmulate your AWS cloud services locally with LocalStack to streamline testing in VS Code and CI environments. [Learn more](https://docs.localstack.cloud/aws/). \n\n[Install LocalStack (optional)](command:aws.toolkit.installLocalStack)", + "AWS.toolkit.lambda.walkthrough.toolInstall.description.windows": "Manage your AWS services and resources with the AWS Command Line Interface (AWS CLI). \n\n[Install AWS CLI](command:aws.toolkit.installAWSCLI)\n\nBuild locally, invoke, and deploy your functions with the Serverless Application Model (SAM) CLI. \n\n[Install SAM CLI](command:aws.toolkit.installSAMCLI)\n\nDocker is an optional, third party tool that assists with local AWS Lambda runtime emulation. Docker is required to invoke Lambda functions on your local machine. \n\n[Install Docker (optional)](command:aws.toolkit.installDocker)\n\nEmulate your AWS cloud services locally with LocalStack to streamline testing in VS Code and CI environments. [Learn more](https://docs.localstack.cloud/aws/). \n\n[Install LocalStack (optional)](command:aws.toolkit.installLocalStack)", + "AWS.toolkit.lambda.walkthrough.toolInstall.description": "Manage your AWS services and resources with the AWS Command Line Interface (AWS CLI). \n\n[Install AWS CLI](command:aws.toolkit.installAWSCLI)\n\nBuild locally, invoke, and deploy your functions with the Serverless Application Model (SAM) CLI. \n\n[Install SAM CLI](command:aws.toolkit.installSAMCLI)\n\nDocker is an optional, third party tool that assists with local AWS Lambda runtime emulation. Docker is required to invoke Lambda functions on your local machine. \n\n[Install Docker (optional)](command:aws.toolkit.installDocker)\n\nEmulate your AWS cloud services locally with LocalStack to streamline testing in VS Code and CI environments. [Learn more]((https://docs.localstack.cloud/aws/). \n\n[Install LocalStack (optional)](command:aws.toolkit.installLocalStack)\n\nFinch is an open source tool for local container development. Finch aims to help promote innovative upstream container projects by making it easy to install and use them. [Learn more](https://runfinch.com/) \n\n[Install Finch (optional)](command:aws.toolkit.installFinch)", "AWS.toolkit.lambda.walkthrough.chooseTemplate.title": "Choose your application template", "AWS.toolkit.lambda.walkthrough.chooseTemplate.description": "Select a starter application, visually compose an application from scratch, open an existing application, or browse more application examples. \n\nInfrastructure Composer allows you to visually compose modern applications in the cloud. It will define the necessary permissions between resources when you drag a connection between them. \n\n[Initialize your project](command:aws.toolkit.lambda.initializeWalkthroughProject)", "AWS.toolkit.lambda.walkthrough.step1.title": "Iterate locally", diff --git a/packages/core/src/awsService/appBuilder/activation.ts b/packages/core/src/awsService/appBuilder/activation.ts index 01f01a1b4c8..93cf1119448 100644 --- a/packages/core/src/awsService/appBuilder/activation.ts +++ b/packages/core/src/awsService/appBuilder/activation.ts @@ -150,6 +150,9 @@ async function registerAppBuilderCommands(context: ExtContext): Promise { Commands.register('aws.toolkit.installLocalStack', async () => { await installLocalStackExtension(source) }), + Commands.register('aws.toolkit.installFinch', async () => { + await getOrInstallCliWrapper('finch', source) + }), Commands.register('aws.toolkit.lambda.setWalkthroughToAPI', async () => { await setWalkthrough('API') }), diff --git a/packages/core/src/shared/telemetry/vscodeTelemetry.json b/packages/core/src/shared/telemetry/vscodeTelemetry.json index fee97143abd..fcf6140eb13 100644 --- a/packages/core/src/shared/telemetry/vscodeTelemetry.json +++ b/packages/core/src/shared/telemetry/vscodeTelemetry.json @@ -1,5 +1,19 @@ { "types": [ + { + "name": "toolId", + "type": "string", + "description": "The tool being installed", + "allowedValues": [ + "session-manager-plugin", + "dotnet-lambda-deploy", + "dotnet-deploy-cli", + "aws-cli", + "sam-cli", + "docker", + "finch" + ] + }, { "name": "amazonQProfileRegion", "type": "string", diff --git a/packages/core/src/shared/utilities/cliUtils.ts b/packages/core/src/shared/utilities/cliUtils.ts index a37a7228687..bf19cd19791 100644 --- a/packages/core/src/shared/utilities/cliUtils.ts +++ b/packages/core/src/shared/utilities/cliUtils.ts @@ -55,7 +55,7 @@ interface Cli { exec?: string } -export type AwsClis = Extract +export type AwsClis = Extract /** * CLIs and their full filenames and download paths for their respective OSes @@ -170,6 +170,21 @@ export const awsClis: { [cli in AwsClis]: Cli } = { manualInstallLink: 'https://docs.docker.com/desktop', exec: 'docker', }, + // Currently Finch is available for MacOS and Linux; Windows support will be added if/when available + finch: { + command: { + unix: ['finch', path.join('/', 'usr', 'bin', 'finch'), path.join('/', 'usr', 'local', 'bin', 'finch')], + }, + source: { + macos: { + x86: 'https://github.com/runfinch/finch/releases/download/v1.11.0/Finch-v1.11.0-x86_64.pkg', + arm: 'https://github.com/runfinch/finch/releases/download/v1.11.0/Finch-v1.11.0-aarch64.pkg', + }, + }, + name: 'Finch', + manualInstallLink: 'https://runfinch.com/docs/getting-started/installation/', + exec: 'finch', + }, } /** @@ -185,7 +200,7 @@ export async function installCli( ): Promise { const cliToInstall = awsClis[cli] if (!cliToInstall) { - throw new InstallerError(`Invalid not found for CLI: ${cli}`) + throw new InstallerError(`Installer not found for CLI: ${cli}`) } let result: Result = 'Succeeded' let reason: string = '' @@ -247,10 +262,11 @@ export async function installCli( case 'aws-cli': case 'sam-cli': case 'docker': + case 'finch': cliPath = await installGui(cli, tempDir, progress, timeout) break default: - throw new InstallerError(`Invalid not found for CLI: ${cli}`) + throw new InstallerError(`Installer not found for CLI: ${cli}`) } } finally { timeout.dispose() diff --git a/packages/core/src/test/awsService/appBuilder/walkthrough.test.ts b/packages/core/src/test/awsService/appBuilder/walkthrough.test.ts index 988f01902fd..f295f5eb58d 100644 --- a/packages/core/src/test/awsService/appBuilder/walkthrough.test.ts +++ b/packages/core/src/test/awsService/appBuilder/walkthrough.test.ts @@ -51,6 +51,11 @@ const scenarios: TestScenario[] = [ platform: 'win32', shouldSucceed: true, }, + { + toolID: 'finch', + platform: 'win32', + shouldSucceed: false, + }, { toolID: 'aws-cli', platform: 'darwin', @@ -66,6 +71,11 @@ const scenarios: TestScenario[] = [ platform: 'darwin', shouldSucceed: true, }, + { + toolID: 'finch', + platform: 'darwin', + shouldSucceed: true, + }, { toolID: 'aws-cli', platform: 'linux', @@ -81,6 +91,11 @@ const scenarios: TestScenario[] = [ platform: 'linux', shouldSucceed: false, }, + { + toolID: 'finch', + platform: 'linux', + shouldSucceed: false, + }, ] describe('AppBuilder Walkthrough', function () { diff --git a/packages/toolkit/package.json b/packages/toolkit/package.json index b48de05e836..96828960a0a 100644 --- a/packages/toolkit/package.json +++ b/packages/toolkit/package.json @@ -4546,6 +4546,16 @@ "description": "%AWS.toolkit.lambda.walkthrough.description%", "when": "workspacePlatform != webworker", "steps": [ + { + "id": "toolInstallWindows", + "title": "%AWS.toolkit.lambda.walkthrough.toolInstall.title%", + "description": "%AWS.toolkit.lambda.walkthrough.toolInstall.description.windows%", + "media": { + "image": "./resources/walkthrough/appBuilder/install.png", + "altText": "Showing GUI installer" + }, + "when": "isWindows" + }, { "id": "toolInstall", "title": "%AWS.toolkit.lambda.walkthrough.toolInstall.title%", @@ -4553,7 +4563,8 @@ "media": { "image": "./resources/walkthrough/appBuilder/install.png", "altText": "Showing GUI installer" - } + }, + "when": "!isWindows" }, { "id": "chooseTemplate",