Skip to content

Commit 6468dcc

Browse files
author
Keegan Irby
committed
address pr feedback
1 parent 5d0df7a commit 6468dcc

File tree

4 files changed

+40
-33
lines changed

4 files changed

+40
-33
lines changed

packages/core/src/awsService/cloudWatchLogs/activation.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,13 @@ export async function activate(context: vscode.ExtensionContext, configuration:
9191
Commands.register('aws.cwl.changeFilterPattern', async () => changeLogSearchParams(registry, 'filterPattern')),
9292

9393
Commands.register('aws.cwl.changeTimeFilter', async () => changeLogSearchParams(registry, 'timeFilter')),
94-
94+
9595
Commands.register('aws.cwl.tailLogGroup', async (node: LogGroupNode | CloudWatchLogsNode) => {
9696
const logGroupInfo =
9797
node instanceof LogGroupNode
9898
? { regionName: node.regionCode, groupName: node.logGroup.logGroupName! }
9999
: undefined
100100
await tailLogGroup(logGroupInfo)
101-
}),
101+
})
102102
)
103103
}

packages/core/src/awsService/cloudWatchLogs/commands/tailLogGroup.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ import { CloudWatchLogsGroupInfo } from '../registry/logDataRegistry'
1313
import { RegionSubmenu, RegionSubmenuResponse } from '../../../shared/ui/common/regionSubmenu'
1414
import { CancellationError } from '../../../shared/utilities/timeoutUtils'
1515
import { LogStreamFilterResponse, LogStreamFilterSubmenu } from '../liveTailLogStreamSubmenu'
16-
import { getLogger } from '../../../shared'
16+
import { getLogger, ToolkitError } from '../../../shared'
17+
import { cwlFilterPatternHelpUrl } from '../../../shared/constants'
1718

1819
const localize = nls.loadMessageBundle()
1920

@@ -49,7 +50,7 @@ export class TailLogGroupWizard extends Wizard<TailLogGroupWizardResponse> {
4950
this.form.regionLogGroupSubmenuResponse.bindPrompter(createRegionLogGroupSubmenu)
5051
this.form.logStreamFilter.bindPrompter((state) => {
5152
if (!state.regionLogGroupSubmenuResponse?.data) {
52-
throw Error('LogGroupName is null')
53+
throw new ToolkitError('LogGroupName is null')
5354
}
5455
return new LogStreamFilterSubmenu(
5556
state.regionLogGroupSubmenuResponse.data,
@@ -80,7 +81,7 @@ async function getLogGroupQuickPickOptions(regionCode: string): Promise<DataQuic
8081

8182
for await (const logGroupObject of logGroups) {
8283
if (!logGroupObject.arn || !logGroupObject.logGroupName) {
83-
throw Error('LogGroupObject name or arn undefined')
84+
throw new ToolkitError('LogGroupObject name or arn undefined')
8485
}
8586

8687
logGroupsOptions.push({
@@ -97,7 +98,7 @@ function formatLogGroupArn(logGroupArn: string): string {
9798
}
9899

99100
export function createFilterPatternPrompter() {
100-
const helpUri = 'https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html'
101+
const helpUri = cwlFilterPatternHelpUrl
101102
return createInputBox({
102103
title: 'Provide log event filter pattern',
103104
placeholder: 'filter pattern (case sensitive; empty matches all)',

packages/core/src/awsService/cloudWatchLogs/liveTailLogStreamSubmenu.ts

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ import { pageableToCollection } from '../../shared/utilities/collectionUtils'
1111
import { CloudWatchLogs } from 'aws-sdk'
1212
import { isValidResponse, StepEstimator } from '../../shared/wizards/wizard'
1313
import { isNonNullable } from '../../shared/utilities/tsUtils'
14+
import {
15+
startLiveTailHelpUrl,
16+
startLiveTailLogStreamNamesHelpUrl,
17+
startLiveTailLogStreamPrefixHelpUrl,
18+
} from '../../shared/constants'
1419

15-
export enum LogStreamFilterType {
16-
MENU = 'menu',
17-
PREFIX = 'prefix',
18-
SPECIFIC = 'specific',
19-
ALL = 'all',
20-
}
20+
export type LogStreamFilterType = 'menu' | 'prefix' | 'specific' | 'all'
2121

2222
export interface LogStreamFilterResponse {
2323
readonly filter?: string
@@ -26,7 +26,7 @@ export interface LogStreamFilterResponse {
2626

2727
export class LogStreamFilterSubmenu extends Prompter<LogStreamFilterResponse> {
2828
private logStreamPrefixRegEx = /^[^:*]*$/
29-
private currentState: LogStreamFilterType = LogStreamFilterType.MENU
29+
private currentState: LogStreamFilterType = 'menu'
3030
private steps?: [current: number, total: number]
3131
private region: string
3232
private logGroupArn: string
@@ -39,7 +39,7 @@ export class LogStreamFilterSubmenu extends Prompter<LogStreamFilterResponse> {
3939
}
4040

4141
public createMenuPrompter() {
42-
const helpUri = 'https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_StartLiveTail.html'
42+
const helpUri = startLiveTailHelpUrl
4343
const prompter = createQuickPick(this.menuOptions, {
4444
title: 'Select LogStream filter type',
4545
buttons: createCommonButtons(helpUri),
@@ -52,24 +52,23 @@ export class LogStreamFilterSubmenu extends Prompter<LogStreamFilterResponse> {
5252
options.push({
5353
label: 'All',
5454
detail: 'Include log events from all LogStreams in the selected LogGroup',
55-
data: LogStreamFilterType.ALL,
55+
data: 'all',
5656
})
5757
options.push({
5858
label: 'Specific',
5959
detail: 'Include log events from only a specific LogStream',
60-
data: LogStreamFilterType.SPECIFIC,
60+
data: 'specific',
6161
})
6262
options.push({
6363
label: 'Prefix',
6464
detail: 'Include log events from LogStreams that begin with a provided prefix',
65-
data: LogStreamFilterType.PREFIX,
65+
data: 'prefix',
6666
})
6767
return options
6868
}
6969

7070
public createLogStreamPrefixBox(): InputBoxPrompter {
71-
const helpUri =
72-
'https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_StartLiveTail.html#CWL-StartLiveTail-request-logStreamNamePrefixes'
71+
const helpUri = startLiveTailLogStreamPrefixHelpUrl
7372
return createInputBox({
7473
title: 'Enter LogStream prefix',
7574
placeholder: 'logStream prefix (case sensitive; empty matches all)',
@@ -90,8 +89,7 @@ export class LogStreamFilterSubmenu extends Prompter<LogStreamFilterResponse> {
9089
}
9190

9291
public createLogStreamSelector(): QuickPickPrompter<string> {
93-
const helpUri =
94-
'https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_StartLiveTail.html#CWL-StartLiveTail-request-logStreamNames'
92+
const helpUri = startLiveTailLogStreamNamesHelpUrl
9593
const client = new DefaultCloudWatchLogsClient(this.region)
9694
const request: CloudWatchLogs.DescribeLogStreamsRequest = {
9795
logGroupIdentifier: this.logGroupArn,
@@ -118,37 +116,37 @@ export class LogStreamFilterSubmenu extends Prompter<LogStreamFilterResponse> {
118116
protected async promptUser(): Promise<PromptResult<LogStreamFilterResponse>> {
119117
while (true) {
120118
switch (this.currentState) {
121-
case LogStreamFilterType.MENU: {
119+
case 'menu': {
122120
const prompter = this.createMenuPrompter()
123121
this.steps && prompter.setSteps(this.steps[0], this.steps[1])
124122

125123
const resp = await prompter.prompt()
126-
if (resp === LogStreamFilterType.PREFIX) {
127-
this.switchState(LogStreamFilterType.PREFIX)
128-
} else if (resp === LogStreamFilterType.SPECIFIC) {
129-
this.switchState(LogStreamFilterType.SPECIFIC)
130-
} else if (resp === LogStreamFilterType.ALL) {
124+
if (resp === 'prefix') {
125+
this.switchState('prefix')
126+
} else if (resp === 'specific') {
127+
this.switchState('specific')
128+
} else if (resp === 'all') {
131129
return { filter: undefined, type: resp }
132130
} else {
133131
return undefined
134132
}
135133

136134
break
137135
}
138-
case LogStreamFilterType.PREFIX: {
136+
case 'prefix': {
139137
const resp = await this.createLogStreamPrefixBox().prompt()
140138
if (isValidResponse(resp)) {
141-
return { filter: resp, type: LogStreamFilterType.PREFIX }
139+
return { filter: resp, type: 'prefix' }
142140
}
143-
this.switchState(LogStreamFilterType.MENU)
141+
this.switchState('menu')
144142
break
145143
}
146-
case LogStreamFilterType.SPECIFIC: {
144+
case 'specific': {
147145
const resp = await this.createLogStreamSelector().prompt()
148146
if (isValidResponse(resp)) {
149-
return { filter: resp, type: LogStreamFilterType.SPECIFIC }
147+
return { filter: resp, type: 'specific' }
150148
}
151-
this.switchState(LogStreamFilterType.MENU)
149+
this.switchState('menu')
152150
break
153151
}
154152
}

packages/core/src/shared/constants.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,14 @@ export const ecsIamPermissionsUrl = vscode.Uri.parse(
113113
export const CLOUDWATCH_LOGS_SCHEME = 'aws-cwl' // eslint-disable-line @typescript-eslint/naming-convention
114114
export const AWS_SCHEME = 'aws' // eslint-disable-line @typescript-eslint/naming-convention
115115

116+
export const startLiveTailHelpUrl =
117+
'https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_StartLiveTail.html'
118+
export const startLiveTailLogStreamPrefixHelpUrl = `${startLiveTailHelpUrl}#CWL-StartLiveTail-request-logStreamNamePrefixes`
119+
export const startLiveTailLogStreamNamesHelpUrl = `${startLiveTailHelpUrl}#CWL-StartLiveTail-request-logStreamNames`
120+
121+
export const cwlFilterPatternHelpUrl =
122+
'https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html'
123+
116124
export const lambdaPackageTypeImage = 'Image'
117125

118126
// URLs for App Runner

0 commit comments

Comments
 (0)