diff --git a/pkg/sync/create_pr.go b/pkg/sync/create_pr.go index 87d6b53..9e67ccc 100644 --- a/pkg/sync/create_pr.go +++ b/pkg/sync/create_pr.go @@ -14,7 +14,7 @@ func (o Operation) createSyncReleaseNextPR() error { branches := o.Config.Branches return o.createPR( o.triggerCIMessage(), - fmt.Sprintf(o.Config.Messages.TriggerCIBody, branches.ReleaseNext, branches.Main), + o.triggerCIBody(), branches.ReleaseNext, branches.SynchCI+branches.ReleaseNext, ) diff --git a/pkg/sync/resync_releases.go b/pkg/sync/resync_releases.go index 8cb4297..f7eb83e 100644 --- a/pkg/sync/resync_releases.go +++ b/pkg/sync/resync_releases.go @@ -1,7 +1,9 @@ package sync import ( + "bytes" "fmt" + "text/template" gitv5 "github.com/go-git/go-git/v5" "github.com/openshift-knative/deviate/pkg/config/git" @@ -108,9 +110,25 @@ func (r resyncRelease) createSyncReleasePR(downstreamBranch, upstreamBranch, syn title := fmt.Sprintf( r.Config.Messages.TriggerCI, downstreamBranch, upstreamBranch) - body := fmt.Sprintf( - r.Config.Messages.TriggerCIBody, - downstreamBranch, upstreamBranch) + + tmplData := triggerCIMessageData{ + ReleaseBranch: downstreamBranch, + MainBranch: upstreamBranch, + } + + t, err := template.New("resyncTriggerCIBody").Parse(r.Config.Messages.TriggerCIBody) + if err != nil { + r.Printf("Error parsing TriggerCIBody message template for resync: %v. Using raw template string.", err) + return r.createPR(title, fmt.Sprintf(r.Config.Messages.TriggerCIBody, downstreamBranch, upstreamBranch), downstreamBranch, syncBranch) + } + + var buf bytes.Buffer + if err := t.Execute(&buf, tmplData); err != nil { + r.Printf("Error executing TriggerCIBody message template for resync: %v. Using raw template string.", err) + return r.createPR(title, fmt.Sprintf(r.Config.Messages.TriggerCIBody, downstreamBranch, upstreamBranch), downstreamBranch, syncBranch) + } + body := buf.String() + return r.createPR(title, body, downstreamBranch, syncBranch) } } diff --git a/pkg/sync/trigger_ci.go b/pkg/sync/trigger_ci.go index 4e67150..db8a247 100644 --- a/pkg/sync/trigger_ci.go +++ b/pkg/sync/trigger_ci.go @@ -1,9 +1,10 @@ package sync import ( - "fmt" + "bytes" "os" "path" + "text/template" "time" "github.com/openshift-knative/deviate/pkg/config/git" @@ -14,11 +15,52 @@ func (o Operation) triggerCI() error { return triggerCI{o}.run() } +// triggerCIMessageData holds the data for the TriggerCI message template. +type triggerCIMessageData struct { + ReleaseBranch string + MainBranch string +} + func (o Operation) triggerCIMessage() string { - return fmt.Sprintf( - o.Config.Messages.TriggerCI, - o.Config.Branches.ReleaseNext, - o.Config.Branches.Main) + tmplData := triggerCIMessageData{ + ReleaseBranch: o.Config.Branches.ReleaseNext, + MainBranch: o.Config.Branches.Main, + } + + t, err := template.New("triggerCIMessage").Parse(o.Config.Messages.TriggerCI) + if err != nil { + o.Printf("Error parsing TriggerCI message template: %v. Using raw template string.", err) + return o.Config.Messages.TriggerCI // Return raw template on parsing error + } + + var buf bytes.Buffer + if err := t.Execute(&buf, tmplData); err != nil { + o.Printf("Error executing TriggerCI message template: %v. Using raw template string.", err) + return o.Config.Messages.TriggerCI // Return raw template on execution error + } + + return buf.String() +} + +func (o Operation) triggerCIBody() string { + tmplData := triggerCIMessageData{ + ReleaseBranch: o.Config.Branches.ReleaseNext, + MainBranch: o.Config.Branches.Main, + } + + t, err := template.New("triggerCIBody").Parse(o.Config.Messages.TriggerCIBody) + if err != nil { + o.Printf("Error parsing TriggerCIBody message template: %v. Using raw template string.", err) + return o.Config.Messages.TriggerCIBody // Return raw template on parsing error + } + + var buf bytes.Buffer + if err := t.Execute(&buf, tmplData); err != nil { + o.Printf("Error executing TriggerCIBody message template: %v. Using raw template string.", err) + return o.Config.Messages.TriggerCIBody // Return raw template on execution error + } + + return buf.String() } type triggerCI struct {