Skip to content

Commit 51dcb64

Browse files
authored
refactor(commands): migrate to commands2 #2738
This is a step towards getting better telemetry about command usage, in particular "aws.toggleSamCodeLenses".
1 parent 260491e commit 51dcb64

File tree

18 files changed

+157
-224
lines changed

18 files changed

+157
-224
lines changed

src/apigateway/activation.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { RestApiNode } from './explorer/apiNodes'
88
import { invokeRemoteRestApi } from './vue/invokeRemoteRestApi'
99
import { copyUrlCommand } from './commands/copyUrl'
1010
import { ExtContext } from '../shared/extensions'
11+
import { Commands } from '../shared/vscode/commands2'
1112

1213
/**
1314
* Activate API Gateway functionality for the extension.
@@ -19,14 +20,8 @@ export async function activate(activateArguments: {
1920
const extensionContext = activateArguments.extContext.extensionContext
2021
const regionProvider = activateArguments.extContext.regionProvider
2122
extensionContext.subscriptions.push(
22-
vscode.commands.registerCommand(
23-
'aws.apig.copyUrl',
24-
async (node: RestApiNode) => await copyUrlCommand(node, regionProvider)
25-
)
26-
)
27-
28-
extensionContext.subscriptions.push(
29-
vscode.commands.registerCommand(
23+
Commands.register('aws.apig.copyUrl', async (node: RestApiNode) => await copyUrlCommand(node, regionProvider)),
24+
Commands.register(
3025
'aws.apig.invokeRemoteRestApi',
3126
async (node: RestApiNode) =>
3227
await invokeRemoteRestApi(activateArguments.extContext, {

src/apprunner/activation.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { deleteService } from './commands/deleteService'
1515
import { createFromEcr } from './commands/createServiceFromEcr'
1616
import { ExtContext } from '../shared/extensions'
1717
import { copyToClipboard } from '../shared/utilities/messages'
18+
import { Commands } from '../shared/vscode/commands2'
1819

1920
const localize = nls.loadMessageBundle()
2021

@@ -79,7 +80,7 @@ commandMap.set(['aws.apprunner.deleteService', DELETE_SERVICE_FAILED], deleteSer
7980
export async function activate(context: ExtContext): Promise<void> {
8081
commandMap.forEach((command, tuple) => {
8182
context.extensionContext.subscriptions.push(
82-
vscode.commands.registerCommand(tuple[0], async (...args: any) => {
83+
Commands.register(tuple[0], async (...args: any) => {
8384
try {
8485
await command(...args)
8586
} catch (err) {

src/awsexplorer/activation.ts

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -102,40 +102,25 @@ async function registerAwsExplorerCommands(
102102
)
103103

104104
context.extensionContext.subscriptions.push(
105-
vscode.commands.registerCommand(
105+
Commands.register(
106106
'aws.executeStateMachine',
107107
async (node: StateMachineNode) => await executeStateMachine(context, node)
108-
)
109-
)
110-
111-
context.extensionContext.subscriptions.push(
112-
vscode.commands.registerCommand(
108+
),
109+
Commands.register(
113110
'aws.renderStateMachineGraph',
114111
async (node: StateMachineNode) =>
115112
await downloadStateMachineDefinition({
116113
stateMachineNode: node,
117114
outputChannel: toolkitOutputChannel,
118115
isPreviewAndRender: true,
119116
})
120-
)
121-
)
122-
123-
context.extensionContext.subscriptions.push(
124-
vscode.commands.registerCommand('aws.copyArn', async (node: AWSResourceNode) => await copyArnCommand(node))
125-
)
126-
127-
context.extensionContext.subscriptions.push(
128-
vscode.commands.registerCommand('aws.copyName', async (node: AWSResourceNode) => await copyNameCommand(node))
129-
)
130-
131-
context.extensionContext.subscriptions.push(
132-
vscode.commands.registerCommand('aws.refreshAwsExplorerNode', async (element: AWSTreeNodeBase | undefined) => {
117+
),
118+
Commands.register('aws.copyArn', async (node: AWSResourceNode) => await copyArnCommand(node)),
119+
Commands.register('aws.copyName', async (node: AWSResourceNode) => await copyNameCommand(node)),
120+
Commands.register('aws.refreshAwsExplorerNode', async (element: AWSTreeNodeBase | undefined) => {
133121
awsExplorer.refresh(element)
134-
})
135-
)
136-
137-
context.extensionContext.subscriptions.push(
138-
vscode.commands.registerCommand('aws.loadMoreChildren', async (node: AWSTreeNodeBase & LoadMoreNode) => {
122+
}),
123+
Commands.register('aws.loadMoreChildren', async (node: AWSTreeNodeBase & LoadMoreNode) => {
139124
await loadMoreChildrenCommand(node, awsExplorer)
140125
})
141126
)

src/cloudWatchLogs/activation.ts

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { LogStreamCodeLensProvider } from './document/logStreamCodeLensProvider'
1515
import { LogStreamDocumentProvider } from './document/logStreamDocumentProvider'
1616
import { LogGroupNode } from './explorer/logGroupNode'
1717
import { LogStreamRegistry } from './registry/logStreamRegistry'
18+
import { Commands } from '../shared/vscode/commands2'
1819

1920
export async function activate(context: vscode.ExtensionContext, configuration: Settings): Promise<void> {
2021
const settings = new CloudWatchLogsSettings(configuration)
@@ -45,29 +46,24 @@ export async function activate(context: vscode.ExtensionContext, configuration:
4546
)
4647
)
4748

48-
context.subscriptions.push(vscode.commands.registerCommand('aws.copyLogStreamName', copyLogStreamName))
49+
context.subscriptions.push(Commands.register('aws.copyLogStreamName', copyLogStreamName))
4950
context.subscriptions.push(
50-
vscode.commands.registerCommand(
51+
Commands.register(
5152
'aws.addLogEvents',
5253
async (
5354
document: vscode.TextDocument,
5455
registry: LogStreamRegistry,
5556
headOrTail: 'head' | 'tail',
5657
onDidChangeCodeLensEvent: vscode.EventEmitter<void>
5758
) => addLogEvents(document, registry, headOrTail, onDidChangeCodeLensEvent)
58-
)
59-
)
60-
context.subscriptions.push(
61-
vscode.commands.registerCommand(
59+
),
60+
Commands.register(
6261
'aws.saveCurrentLogStreamContent',
6362
async (uri?: vscode.Uri) => await saveCurrentLogStreamContent(uri, registry)
64-
)
65-
)
66-
67-
// AWS Explorer right-click action
68-
// Here instead of in ../awsexplorer/activation due to dependence on the registry.
69-
context.subscriptions.push(
70-
vscode.commands.registerCommand(
63+
),
64+
// AWS Explorer right-click action
65+
// Here instead of in ../awsexplorer/activation due to dependence on the registry.
66+
Commands.register(
7167
'aws.cloudWatchLogs.viewLogStream',
7268
async (node: LogGroupNode) => await viewLogStream(node, registry)
7369
)

src/codewhisperer/activation.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import { ReferenceInlineProvider } from './service/referenceInlineProvider'
4343
import { SecurityPanelViewProvider } from './views/securityPanelViewProvider'
4444
import { disposeSecurityDiagnostic } from './service/diagnosticsProvider'
4545
import { RecommendationHandler } from './service/recommendationHandler'
46+
import { Commands } from '../shared/vscode/commands2'
4647

4748
const performance = globalThis.performance ?? require('perf_hooks').performance
4849

@@ -100,7 +101,7 @@ export async function activate(context: ExtContext): Promise<void> {
100101
/**
101102
* Accept terms of service
102103
*/
103-
vscode.commands.registerCommand('aws.codeWhisperer.acceptTermsOfService', async () => {
104+
Commands.register('aws.codeWhisperer.acceptTermsOfService', async () => {
104105
set(CodeWhispererConstants.autoTriggerEnabledKey, true, context)
105106
set(CodeWhispererConstants.termsAcceptedKey, true, context)
106107
await vscode.commands.executeCommand('setContext', CodeWhispererConstants.termsAcceptedKey, true)
@@ -119,14 +120,14 @@ export async function activate(context: ExtContext): Promise<void> {
119120
/**
120121
* Cancel terms of service
121122
*/
122-
vscode.commands.registerCommand('aws.codeWhisperer.cancelTermsOfService', async () => {
123+
Commands.register('aws.codeWhisperer.cancelTermsOfService', async () => {
123124
set(CodeWhispererConstants.autoTriggerEnabledKey, false, context)
124125
await vscode.commands.executeCommand('aws.codeWhisperer.refresh')
125126
}),
126127
/**
127128
* Open Configuration
128129
*/
129-
vscode.commands.registerCommand('aws.codeWhisperer.configure', async id => {
130+
Commands.register('aws.codeWhisperer.configure', async id => {
130131
if (id === 'codewhisperer') {
131132
await vscode.commands.executeCommand(
132133
'workbench.action.openSettings',
@@ -149,13 +150,13 @@ export async function activate(context: ExtContext): Promise<void> {
149150
// code scan
150151
showSecurityScan.register(context, securityPanelViewProvider, client),
151152
// manual trigger
152-
vscode.commands.registerCommand('aws.codeWhisperer', async () => {
153+
Commands.register({ id: 'aws.codeWhisperer', autoconnect: true }, async () => {
153154
invokeRecommendation(vscode.window.activeTextEditor as vscode.TextEditor, client, await getConfigEntry())
154155
}),
155156
/**
156157
* On recommendation acceptance
157158
*/
158-
vscode.commands.registerCommand(
159+
Commands.register(
159160
'aws.codeWhisperer.accept',
160161
async (
161162
range: vscode.Range,
@@ -329,25 +330,25 @@ export async function activate(context: ExtContext): Promise<void> {
329330
await InlineCompletion.instance.rejectRecommendation(vscode.window.activeTextEditor)
330331
}
331332
}),
332-
vscode.commands.registerCommand('aws.codeWhisperer.rejectCodeSuggestion', async e => {
333+
Commands.register('aws.codeWhisperer.rejectCodeSuggestion', async e => {
333334
if (vscode.window.activeTextEditor)
334335
await InlineCompletion.instance.rejectRecommendation(vscode.window.activeTextEditor)
335336
}),
336337
/**
337338
* Recommendation navigation
338339
*/
339-
vscode.commands.registerCommand('aws.codeWhisperer.nextCodeSuggestion', async () => {
340+
Commands.register('aws.codeWhisperer.nextCodeSuggestion', async () => {
340341
if (vscode.window.activeTextEditor)
341342
InlineCompletion.instance.navigateRecommendation(vscode.window.activeTextEditor, true)
342343
}),
343-
vscode.commands.registerCommand('aws.codeWhisperer.previousCodeSuggestion', async () => {
344+
Commands.register('aws.codeWhisperer.previousCodeSuggestion', async () => {
344345
if (vscode.window.activeTextEditor)
345346
InlineCompletion.instance.navigateRecommendation(vscode.window.activeTextEditor, false)
346347
}),
347348
/**
348349
* Recommendation acceptance
349350
*/
350-
vscode.commands.registerCommand('aws.codeWhisperer.acceptCodeSuggestion', async () => {
351+
Commands.register('aws.codeWhisperer.acceptCodeSuggestion', async () => {
351352
if (vscode.window.activeTextEditor)
352353
await InlineCompletion.instance.acceptRecommendation(vscode.window.activeTextEditor)
353354
})

src/dynamicResources/activation.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { ResourcesNode } from './explorer/nodes/resourcesNode'
1515
import { ResourceNode } from './explorer/nodes/resourceNode'
1616
import { ResourceTypeNode } from './explorer/nodes/resourceTypeNode'
1717
import { RESOURCE_FILE_GLOB_PATTERN } from './awsResourceManager'
18+
import { Commands } from '../shared/vscode/commands2'
1819
import globals from '../shared/extensionGlobals'
1920

2021
const localize = nls.loadMessageBundle()
@@ -30,41 +31,41 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
3031

3132
context.subscriptions.push(
3233
vscode.workspace.registerTextDocumentContentProvider('awsResource', new VirtualDocumentProvider()),
33-
vscode.commands.registerCommand('aws.resources.openResourcePreview', async (node: ResourceNode) => {
34+
Commands.register('aws.resources.openResourcePreview', async (node: ResourceNode) => {
3435
await openResource({
3536
source: node,
3637
preview: true,
3738
resourceManager,
3839
diagnostics: resourceDiagnostics,
3940
})
4041
}),
41-
vscode.commands.registerCommand('aws.resources.copyIdentifier', async (node: ResourceNode) => {
42+
Commands.register('aws.resources.copyIdentifier', async (node: ResourceNode) => {
4243
await copyIdentifier(node.parent.typeName, node.identifier)
4344
}),
44-
vscode.commands.registerCommand('aws.resources.configure', async (node: ResourcesNode) => {
45+
Commands.register('aws.resources.configure', async (node: ResourcesNode) => {
4546
if (await configureResources()) {
4647
node.refresh()
4748
}
4849
}),
49-
vscode.commands.registerCommand('aws.resources.createResource', async (node: ResourceTypeNode) => {
50+
Commands.register('aws.resources.createResource', async (node: ResourceTypeNode) => {
5051
await resourceManager.new(node)
5152
}),
52-
vscode.commands.registerCommand('aws.resources.deleteResource', async (node: ResourceNode) => {
53+
Commands.register('aws.resources.deleteResource', async (node: ResourceNode) => {
5354
if (await deleteResource(node.parent.cloudControl, node.parent.typeName, node.identifier)) {
5455
await resourceManager.close(resourceManager.toUri(node)!)
5556
node.parent.clearChildren()
5657
node.parent.refresh()
5758
}
5859
}),
59-
vscode.commands.registerCommand('aws.resources.updateResource', async (node: ResourceNode) => {
60+
Commands.register('aws.resources.updateResource', async (node: ResourceNode) => {
6061
await openResource({
6162
source: node,
6263
preview: false,
6364
resourceManager,
6465
diagnostics: resourceDiagnostics,
6566
})
6667
}),
67-
vscode.commands.registerCommand('aws.resources.updateResourceInline', async (uri: vscode.Uri) => {
68+
Commands.register('aws.resources.updateResourceInline', async (uri: vscode.Uri) => {
6869
await openResource({
6970
source: uri,
7071
preview: false,
@@ -75,11 +76,11 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
7576
vscode.workspace.onDidSaveTextDocument(async (doc: vscode.TextDocument) => {
7677
return await saveResource(doc, resourceManager, resourceDiagnostics)
7778
}),
78-
vscode.commands.registerCommand('aws.resources.saveResource', async (uri: vscode.Uri) => {
79+
Commands.register('aws.resources.saveResource', async (uri: vscode.Uri) => {
7980
await vscode.window.showTextDocument(uri)
8081
await vscode.commands.executeCommand('workbench.action.files.save')
8182
}),
82-
vscode.commands.registerCommand('aws.resources.closeResource', async (uri: vscode.Uri) => {
83+
Commands.register('aws.resources.closeResource', async (uri: vscode.Uri) => {
8384
if (resourceManager.fromUri(uri) instanceof ResourceNode) {
8485
await openResource({
8586
source: uri,
@@ -92,7 +93,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
9293
await resourceManager.close(uri)
9394
}
9495
}),
95-
vscode.commands.registerCommand('aws.resources.viewDocs', async (node: ResourceTypeNode) => {
96+
Commands.register('aws.resources.viewDocs', async (node: ResourceTypeNode) => {
9697
await vscode.env.openExternal(vscode.Uri.parse(node.metadata.documentation))
9798
}),
9899
vscode.workspace.onDidChangeTextDocument(textDocumentEvent => {

src/ecr/activation.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,26 @@ import { EcrNode } from './explorer/ecrNode'
1212
import { EcrRepositoryNode } from './explorer/ecrRepositoryNode'
1313
import { EcrTagNode } from './explorer/ecrTagNode'
1414
import { deleteTag } from './commands/deleteTag'
15+
import { Commands } from '../shared/vscode/commands2'
1516

1617
/**
1718
* Activates ECR components.
1819
*/
1920
export async function activate(extensionContext: vscode.ExtensionContext): Promise<void> {
2021
extensionContext.subscriptions.push(
21-
vscode.commands.registerCommand('aws.ecr.createRepository', async (node: EcrNode) => {
22+
Commands.register('aws.ecr.createRepository', async (node: EcrNode) => {
2223
await createRepository(node)
2324
}),
24-
vscode.commands.registerCommand('aws.ecr.deleteRepository', async (node: EcrRepositoryNode) => {
25+
Commands.register('aws.ecr.deleteRepository', async (node: EcrRepositoryNode) => {
2526
await deleteRepository(node)
2627
}),
27-
vscode.commands.registerCommand('aws.ecr.copyRepositoryUri', async (node: EcrRepositoryNode) => {
28+
Commands.register('aws.ecr.copyRepositoryUri', async (node: EcrRepositoryNode) => {
2829
await copyRepositoryUri(node)
2930
}),
30-
vscode.commands.registerCommand('aws.ecr.copyTagUri', async (node: EcrTagNode) => {
31+
Commands.register('aws.ecr.copyTagUri', async (node: EcrTagNode) => {
3132
await copyTagUri(node)
3233
}),
33-
vscode.commands.registerCommand('aws.ecr.deleteTag', async (node: EcrTagNode) => {
34+
Commands.register('aws.ecr.deleteTag', async (node: EcrTagNode) => {
3435
await deleteTag(node)
3536
})
3637
)

src/ecs/activation.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ import { EcsContainerNode } from './explorer/ecsContainerNode'
1313
import { EcsServiceNode } from './explorer/ecsServiceNode'
1414
import { ecsDocumentationUrl } from '../shared/constants'
1515
import { getLogger } from '../shared/logger'
16+
import { Commands } from '../shared/vscode/commands2'
1617

1718
export async function activate(ctx: ExtContext): Promise<void> {
1819
ctx.extensionContext.subscriptions.push(
19-
vscode.commands.registerCommand('aws.ecs.runCommandInContainer', async (node: EcsContainerNode) => {
20+
Commands.register('aws.ecs.runCommandInContainer', async (node: EcsContainerNode) => {
2021
// VS Code will rarely call the command with `undefined` if the tree is still loading
2122
if (!(node instanceof EcsContainerNode)) {
2223
getLogger().error('Cannot run command on node: %O', node)
@@ -33,19 +34,19 @@ export async function activate(ctx: ExtContext): Promise<void> {
3334
)
3435

3536
ctx.extensionContext.subscriptions.push(
36-
vscode.commands.registerCommand('aws.ecs.enableEcsExec', async (node: EcsServiceNode) => {
37+
Commands.register('aws.ecs.enableEcsExec', async (node: EcsServiceNode) => {
3738
await updateEnableExecuteCommandFlag(node, true)
3839
})
3940
)
4041

4142
ctx.extensionContext.subscriptions.push(
42-
vscode.commands.registerCommand('aws.ecs.disableEcsExec', async (node: EcsServiceNode) => {
43+
Commands.register('aws.ecs.disableEcsExec', async (node: EcsServiceNode) => {
4344
await updateEnableExecuteCommandFlag(node, false)
4445
})
4546
)
4647

4748
ctx.extensionContext.subscriptions.push(
48-
vscode.commands.registerCommand('aws.ecs.viewDocumentation', async () => {
49+
Commands.register('aws.ecs.viewDocumentation', async () => {
4950
vscode.env.openExternal(vscode.Uri.parse(ecsDocumentationUrl))
5051
})
5152
)

0 commit comments

Comments
 (0)