From a15a7696103f21b20781a97783b46759b1190be7 Mon Sep 17 00:00:00 2001 From: Carlo Mandelli Date: Fri, 29 Nov 2019 13:40:27 +0100 Subject: [PATCH] cmd: add details to run list --- cmd/agola/cmd/runlist.go | 59 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 6 deletions(-) diff --git a/cmd/agola/cmd/runlist.go b/cmd/agola/cmd/runlist.go index 804742e..b2a5353 100644 --- a/cmd/agola/cmd/runlist.go +++ b/cmd/agola/cmd/runlist.go @@ -18,6 +18,7 @@ import ( "context" "fmt" "path" + "sort" gwapitypes "agola.io/agola/services/gateway/api/types" gwclient "agola.io/agola/services/gateway/client" @@ -43,6 +44,18 @@ type runListOptions struct { start string } +type runDetails struct { + runResponse *gwapitypes.RunResponse + tasks []*taskDetails +} + +type taskDetails struct { + name string + level int + runTaskResponse *gwapitypes.RunTaskResponse + retrieveError error +} + var runListOpts runListOptions func init() { @@ -60,11 +73,22 @@ func init() { cmdRun.AddCommand(cmdRunList) } -func printRuns(runs []*gwapitypes.RunResponse) { +func printRuns(runs []*runDetails) { for _, run := range runs { - fmt.Printf("%s: Phase: %s, Result: %s\n", run.ID, run.Phase, run.Result) - for _, task := range run.Tasks { - fmt.Printf("\tTaskName: %s, Status: %s\n", task.Name, task.Status) + fmt.Printf("%s: Phase: %s, Result: %s\n", run.runResponse.ID, run.runResponse.Phase, run.runResponse.Result) + for _, task := range run.tasks { + fmt.Printf("\tTaskName: %s, Status: %s\n", task.runTaskResponse.Name, task.runTaskResponse.Status) + if task.retrieveError != nil { + fmt.Printf("\t\tfailed to retrieve task information: %v\n", task.retrieveError) + } else { + for n, step := range task.runTaskResponse.Steps { + if step.Phase.IsFinished() && step.Type == "run" { + fmt.Printf("\t\tStep: %d, Name: %s, Type: %s, Phase: %s, ExitStatus: %d\n", n, step.Name, step.Type, step.Phase, *step.ExitStatus) + } else { + fmt.Printf("\t\tStep: %d, Name: %s, Type: %s, Phase: %s\n", n, step.Name, step.Type, step.Phase) + } + } + } } } } @@ -82,13 +106,36 @@ func runList(cmd *cobra.Command, args []string) error { return err } - runs := make([]*gwapitypes.RunResponse, len(runsResp)) + runs := make([]*runDetails, len(runsResp)) for i, runResponse := range runsResp { run, _, err := gwclient.GetRun(context.TODO(), runResponse.ID) if err != nil { return err } - runs[i] = run + + tasks := []*taskDetails{} + for _, task := range run.Tasks { + runTaskResponse, _, err := gwclient.GetRunTask(context.TODO(), run.ID, task.ID) + t := &taskDetails{ + name: task.Name, + level: task.Level, + runTaskResponse: runTaskResponse, + retrieveError: err, + } + tasks = append(tasks, t) + } + + sort.Slice(tasks, func(i, j int) bool { + if tasks[i].level != tasks[j].level { + return tasks[i].level < tasks[j].level + } + return tasks[i].name < tasks[j].name + }) + + runs[i] = &runDetails{ + runResponse: run, + tasks: tasks, + } } printRuns(runs)