Skip to content

Commit 2fc66f5

Browse files
committed
refactor: Extract describeImageScanFindings function
1 parent 39cbb87 commit 2fc66f5

File tree

1 file changed

+40
-26
lines changed

1 file changed

+40
-26
lines changed

main.go

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ func main() {
5555

5656
// register metrics as background
5757
for range ticker.C {
58+
log.Println("debug: start snapshot()")
5859
err := snapshot()
60+
log.Println("debug: end snapshot()")
5961
if err != nil {
6062
log.Fatal(err)
6163
}
@@ -116,7 +118,6 @@ func getECRImageScanFindings(repositories []string) ([]findingsInfo, error) {
116118

117119
svc := ecr.New(sess)
118120
findingsInfos := []findingsInfo{}
119-
results := []findingsInfo{}
120121

121122
imageTags, err := getImageTags()
122123
if err != nil {
@@ -130,33 +131,46 @@ func getECRImageScanFindings(repositories []string) ([]findingsInfo, error) {
130131
RepositoryName: aws.String(repo),
131132
}
132133

133-
for {
134-
findings, err := svc.DescribeImageScanFindings(input)
135-
//nolint:gocritic,errorlint
136-
if aerr, ok := err.(awserr.Error); ok {
137-
switch aerr.Code() {
138-
case "ScanNotFoundException":
139-
log.Printf("Skip the repository %v with imageTag %v. %v\n", repo, imageTag, err.Error())
140-
case "ImageNotFoundException":
141-
log.Printf("Skip the repository %v with imageTag %v. %v\n", repo, imageTag, err.Error())
142-
default:
143-
return nil, fmt.Errorf("failed to describe image scan findings: %w", err)
144-
}
145-
} else if findings.ImageScanFindings == nil {
146-
log.Printf("Skip the repository %v with imageTag %v. ImageScanStatus: Status %v Description %v\n", repo, imageTag, findings.ImageScanStatus.Status, findings.ImageScanStatus.Description)
147-
} else {
148-
results = generateFindingsInfos(findings, imageTag, repo)
149-
}
150-
151-
findingsInfos = append(findingsInfos, results...)
152-
153-
// Pagination
154-
if findings.NextToken == nil {
155-
break
156-
}
157-
input.SetNextToken(*findings.NextToken)
134+
result, err := describeImageScanFindings(svc, input, repo, imageTag)
135+
if err != nil {
136+
return nil, fmt.Errorf("failed to describe image scan findings: %w", err)
158137
}
138+
139+
findingsInfos = append(findingsInfos, result...)
140+
}
141+
}
142+
return findingsInfos, nil
143+
}
144+
145+
func describeImageScanFindings(svc *ecr.ECR, input *ecr.DescribeImageScanFindingsInput, repo string, imageTag string) ([]findingsInfo, error) {
146+
results := []findingsInfo{}
147+
findingsInfos := []findingsInfo{}
148+
149+
for {
150+
findings, err := svc.DescribeImageScanFindings(input)
151+
//nolint:gocritic,errorlint
152+
if aerr, ok := err.(awserr.Error); ok {
153+
switch aerr.Code() {
154+
case "ScanNotFoundException":
155+
log.Printf("Skip the repository %v with imageTag %v. %v\n", repo, imageTag, err.Error())
156+
case "ImageNotFoundException":
157+
log.Printf("Skip the repository %v with imageTag %v. %v\n", repo, imageTag, err.Error())
158+
default:
159+
return nil, fmt.Errorf("failed to describe image scan findings: %w", err)
160+
}
161+
} else if findings.ImageScanFindings == nil {
162+
log.Printf("Skip the repository %v with imageTag %v. ImageScanStatus: Status %v Description %v\n", repo, imageTag, findings.ImageScanStatus.Status, findings.ImageScanStatus.Description)
163+
} else {
164+
results = generateFindingsInfos(findings, imageTag, repo)
165+
}
166+
167+
findingsInfos = append(findingsInfos, results...)
168+
169+
// Pagination
170+
if findings.NextToken == nil {
171+
break
159172
}
173+
input.SetNextToken(*findings.NextToken)
160174
}
161175
return findingsInfos, nil
162176
}

0 commit comments

Comments
 (0)