1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00
wtf/modules/azuredevops/client.go
2019-09-19 10:11:59 +02:00

60 lines
2.0 KiB
Go

package azuredevops
import (
"fmt"
"strings"
azrBuild "github.com/microsoft/azure-devops-go-api/azuredevops/build"
"github.com/pkg/errors"
)
func (widget *Widget) getBuildStats() string {
projName := widget.settings.projectName
statusFilter := azrBuild.BuildStatusValues.All
top := widget.settings.maxRows
builds, err := widget.cli.GetBuilds(widget.ctx, azrBuild.GetBuildsArgs{Project: &projName, StatusFilter: &statusFilter, Top: &top})
if err != nil {
return errors.Wrap(err, "could not get builds").Error()
}
result := ""
for _, build := range builds.Value {
num := *build.BuildNumber
branch := *build.SourceBranch
reason := *build.Reason
triggers := *build.TriggerInfo
if reason == azrBuild.BuildReasonValues.PullRequest {
branch = triggers["pr.sourceBranch"]
}
branch = strings.TrimPrefix(branch, "refs/heads/")
status := *build.Status
statusDisplay := "[white:grey]unknown"
if status == azrBuild.BuildStatusValues.InProgress {
statusDisplay = "[white:blue]in progress"
} else if status == azrBuild.BuildStatusValues.Cancelling {
statusDisplay = "[white:orange]in cancelling"
} else if (status == azrBuild.BuildStatusValues.Postponed) || (status == azrBuild.BuildStatusValues.NotStarted) {
statusDisplay = "[white:blue]waiting"
} else if status == azrBuild.BuildStatusValues.Completed {
buildResult := *build.Result
if buildResult == azrBuild.BuildResultValues.Succeeded {
statusDisplay = "[white:green]succeeded"
} else if buildResult == azrBuild.BuildResultValues.Failed {
statusDisplay = "[white:red]failed"
} else if buildResult == azrBuild.BuildResultValues.Canceled {
statusDisplay = "[white:darkgrey]cancelled"
} else if buildResult == azrBuild.BuildResultValues.PartiallySucceeded {
statusDisplay = "[white:magenta]partially"
}
}
result += fmt.Sprintf("%s[-:-:-] #%s %s (%s) \n", statusDisplay, num, branch, reason)
}
if result == "" {
result = "no builds found"
}
return result
}