Skip to content

Commit cc3e826

Browse files
committed
Fixed the Source Annotation bug.
1 parent 845e92a commit cc3e826

File tree

1 file changed

+30
-17
lines changed

1 file changed

+30
-17
lines changed

internal/catalog/catalog.go

+30-17
Original file line numberDiff line numberDiff line change
@@ -205,30 +205,43 @@ func addSourceAnnotationToTask(file, resourcesURI string) error {
205205
annotationsPattern := regexp.MustCompile(`^\s+annotations:\s*$`)
206206
sourceAnnotationPattern := regexp.MustCompile(`^\s+tekton\.dev/source:\s*".*"$`)
207207

208-
// Flag to indicate if the "tekton.dev/source" annotation is already present
209-
var sourceAnnotationExists bool
208+
// Flag to indicate if we are within the annotations block
209+
var inAnnotationsBlock bool
210+
211+
// Buffer to store annotations lines
212+
var annotationsBuffer []string
210213

211214
// Read the file line by line
212215
for scanner.Scan() {
213216
line := scanner.Text()
214217

215-
// Check if the line matches the annotations pattern
216-
if annotationsPattern.MatchString(line) {
217-
// If annotations block is found, initialize sourceAnnotationExists to false
218-
sourceAnnotationExists = false
219-
} else if !sourceAnnotationExists && sourceAnnotationPattern.MatchString(line) {
220-
// If source annotation is found within annotations block, set sourceAnnotationExists to true
221-
sourceAnnotationExists = true
222-
}
223-
224-
// Append the line to updatedContent slice
225-
updatedContent = append(updatedContent, line)
226-
227-
// Check if we are still within the annotations block
228-
if !sourceAnnotationExists && annotationsPattern.MatchString(line) {
218+
switch {
219+
case annotationsPattern.MatchString(line):
220+
// If annotations block is found, set the inAnnotationsBlock flag to true
221+
inAnnotationsBlock = true
222+
// Append the line to updatedContent slice
223+
updatedContent = append(updatedContent, line)
229224
// Add the source annotation as the first line of the annotations block
230225
updatedContent = append(updatedContent, fmt.Sprintf(" tekton.dev/source: \"%s\"", repoURL))
231-
sourceAnnotationExists = true // Set sourceAnnotationExists to true after adding the annotation
226+
case inAnnotationsBlock:
227+
switch {
228+
case sourceAnnotationPattern.MatchString(line):
229+
// Skip the existing source annotation
230+
continue
231+
case strings.TrimSpace(line) == "" || !strings.HasPrefix(line, " "):
232+
// If a non-indented line or an empty line is found, we consider it as the end of the annotations block
233+
inAnnotationsBlock = false
234+
// Append buffered annotations lines
235+
updatedContent = append(updatedContent, annotationsBuffer...)
236+
// Append the current line
237+
updatedContent = append(updatedContent, line)
238+
default:
239+
// Buffer the annotation lines
240+
annotationsBuffer = append(annotationsBuffer, line)
241+
}
242+
default:
243+
// Append the line to updatedContent slice
244+
updatedContent = append(updatedContent, line)
232245
}
233246
}
234247

0 commit comments

Comments
 (0)