Skip to content

Commit

Permalink
add drift summary on updates
Browse files Browse the repository at this point in the history
  • Loading branch information
motatoes committed Mar 4, 2024
1 parent fd7b813 commit 5347878
Showing 1 changed file with 37 additions and 1 deletion.
38 changes: 37 additions & 1 deletion ee/cli/pkg/comment_updater/updater.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,28 @@ import (
"github.com/diggerhq/digger/libs/orchestrator"
"github.com/diggerhq/digger/libs/orchestrator/scheduler"
"log"
"strings"
)

type AdvancedCommentUpdater struct {
}

func DriftSummaryString(projectName string, issuesMap *map[string]*orchestrator.Issue) string {
driftStatusForProject := (*issuesMap)[projectName]
if driftStatusForProject == nil {
return ""
}

return fmt.Sprintf("[drift: #%v]", driftStatusForProject.ID)
}

func (a AdvancedCommentUpdater) UpdateComment(jobs []scheduler.SerializedJob, prNumber int, prService orchestrator.PullRequestService, prCommentId int64) error {

issuesMap, err := getDriftStatusesFromPRIssues(jobs, prService)
if err != nil {
return fmt.Errorf("error while fetching drift status: %v", err)
}

message := ":construction_worker: Jobs status:\n\n"
for _, job := range jobs {
var jobSpec orchestrator.JobJson
Expand All @@ -24,10 +39,31 @@ func (a AdvancedCommentUpdater) UpdateComment(jobs []scheduler.SerializedJob, pr
isPlan := jobSpec.IsPlan()

message = message + fmt.Sprintf("<!-- PROJECTHOLDER %v -->\n", job.ProjectName)
message = message + fmt.Sprintf("%v **%v** <a href='%v'>%v</a>%v\n", job.Status.ToEmoji(), jobSpec.ProjectName, *job.WorkflowRunUrl, job.Status.ToString(), job.ResourcesSummaryString(isPlan))
message = message + fmt.Sprintf("%v **%v** <a href='%v'>%v</a>%v %v\n", job.Status.ToEmoji(), jobSpec.ProjectName, *job.WorkflowRunUrl, job.Status.ToString(), job.ResourcesSummaryString(isPlan), DriftSummaryString(job.ProjectName, issuesMap))
message = message + fmt.Sprintf("<!-- PROJECTHOLDEREND %v -->\n", job.ProjectName)
}

prService.EditComment(prNumber, prCommentId, message)
return nil
}

func getDriftStatusesFromPRIssues(jobs []scheduler.SerializedJob, prService orchestrator.PullRequestService) (*map[string]*orchestrator.Issue, error) {
issues, err := prService.ListIssues()
if err != nil {
return nil, fmt.Errorf("failed to list issues from SCM: %v", err)
}
issuesMap := make(map[string]*orchestrator.Issue)
var issueLinked *orchestrator.Issue
for _, job := range jobs {
issueLinked = nil
for _, issue := range issues {
if strings.Contains(strings.ToLower(issue.Title), job.ProjectName) &&
strings.Contains(strings.ToLower(issue.Title), "drift") {
issueLinked = issue
break
}
}
issuesMap[job.ProjectName] = issueLinked
}
return &issuesMap, nil
}

0 comments on commit 5347878

Please sign in to comment.