From 7ac07ae65e1e0c76d089b4bacc15ba64e2c890c3 Mon Sep 17 00:00:00 2001 From: Dhruv Thakur Date: Tue, 20 Aug 2024 21:26:54 +0200 Subject: [PATCH] feat: retain workflow order from config --- cmd/render.go | 28 ++++++++++++++++++++++------ internal/ui/view.go | 2 +- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/cmd/render.go b/cmd/render.go index b9d2e9f..7d0db15 100644 --- a/cmd/render.go +++ b/cmd/render.go @@ -10,8 +10,9 @@ import ( ) func render(workflows []types.Workflow, config types.Config) error { - results := make([]gh.ResultData, len(workflows)) + resultsMap := make(map[string]gh.ResultData) resultChannel := make(chan gh.ResultData) + var results []gh.ResultData for _, wf := range workflows { go func(workflow types.Workflow) { @@ -19,14 +20,29 @@ func render(workflows []types.Workflow, config types.Config) error { }(wf) } - for i := range workflows { + for range workflows { r := <-resultChannel - results[i] = r + resultsMap[r.Workflow.ID] = r } - sort.Slice(results, func(i, j int) bool { - return results[i].Workflow.Name < results[j].Workflow.Name - }) + if config.CurrentRepo != nil { + var resultsList []gh.ResultData + for _, r := range resultsMap { + resultsList = append(resultsList, r) + } + // sort workflows alphabetically + sort.Slice(resultsList, func(i, j int) bool { + return resultsList[i].Workflow.Name < resultsList[j].Workflow.Name + }) + results = resultsList + } else { + // sort workflows in the sequence of the config file + resultsInConfigDefinedOrder := make([]gh.ResultData, len(workflows)) + for i, w := range workflows { + resultsInConfigDefinedOrder[i] = resultsMap[w.ID] + } + results = resultsInConfigDefinedOrder + } output, err := ui.GetOutput(config, results) if err != nil { diff --git a/internal/ui/view.go b/internal/ui/view.go index 1ab5422..43fc4a7 100644 --- a/internal/ui/view.go +++ b/internal/ui/view.go @@ -65,7 +65,7 @@ func getTabularOutput(config types.Config, results []gh.ResultData) string { resultsDate := "(" + rr.CreatedAt.Time.Format(dateFormat) + ")" var conclusion string if !rr.CheckSuite.FinishedSuccessfully() { - conclusion = fmt.Sprintf(" %s ", rr.CheckSuite.ConclusionOrState()) + conclusion = fmt.Sprintf(" %s", rr.CheckSuite.ConclusionOrState()) } row = append(row, fmt.Sprintf("%s%s%s", RightPadTrim(fmt.Sprintf("#%d", rr.RunNumber), runNumberPadding),