github.com/wtfutil/wtf@v0.43.0/modules/azuredevops/client.go (about) 1 package azuredevops 2 3 import ( 4 "fmt" 5 "strings" 6 7 azrBuild "github.com/microsoft/azure-devops-go-api/azuredevops/build" 8 "github.com/pkg/errors" 9 ) 10 11 func (widget *Widget) getBuildStats() string { 12 projName := widget.settings.projectName 13 statusFilter := azrBuild.BuildStatusValues.All 14 top := widget.settings.maxRows 15 builds, err := widget.cli.GetBuilds(widget.ctx, azrBuild.GetBuildsArgs{Project: &projName, StatusFilter: &statusFilter, Top: &top}) 16 if err != nil { 17 return errors.Wrap(err, "could not get builds").Error() 18 } 19 20 result := "" 21 for _, build := range builds.Value { 22 num := *build.BuildNumber 23 branch := *build.SourceBranch 24 reason := *build.Reason 25 triggers := *build.TriggerInfo 26 if reason == azrBuild.BuildReasonValues.PullRequest { 27 branch = triggers["pr.sourceBranch"] 28 } 29 branch = strings.TrimPrefix(branch, "refs/heads/") 30 status := *build.Status 31 statusDisplay := "[white:grey]unknown" 32 if status == azrBuild.BuildStatusValues.InProgress { 33 statusDisplay = "[white:blue]in progress" 34 } else if status == azrBuild.BuildStatusValues.Cancelling { 35 statusDisplay = "[white:orange]in cancelling" 36 } else if (status == azrBuild.BuildStatusValues.Postponed) || (status == azrBuild.BuildStatusValues.NotStarted) { 37 statusDisplay = "[white:blue]waiting" 38 } else if status == azrBuild.BuildStatusValues.Completed { 39 buildResult := *build.Result 40 if buildResult == azrBuild.BuildResultValues.Succeeded { 41 statusDisplay = "[white:green]succeeded" 42 } else if buildResult == azrBuild.BuildResultValues.Failed { 43 statusDisplay = "[white:red]failed" 44 } else if buildResult == azrBuild.BuildResultValues.Canceled { 45 statusDisplay = "[white:darkgrey]cancelled" 46 } else if buildResult == azrBuild.BuildResultValues.PartiallySucceeded { 47 statusDisplay = "[white:magenta]partially" 48 } 49 } 50 51 result += fmt.Sprintf("%s[-:-:-] #%s %s (%s) \n", statusDisplay, num, branch, reason) 52 } 53 54 if result == "" { 55 result = "no builds found" 56 } 57 58 return result 59 }