mirror of
https://github.com/drone/drone-cli.git
synced 2025-02-22 01:21:17 +01:00
94 lines
1.8 KiB
Go
94 lines
1.8 KiB
Go
package build
|
|
|
|
import (
|
|
"os"
|
|
"text/template"
|
|
|
|
"github.com/drone/drone-cli/drone/internal"
|
|
"github.com/drone/funcmap"
|
|
"github.com/urfave/cli"
|
|
)
|
|
|
|
var buildQueueCmd = cli.Command{
|
|
Name: "queue",
|
|
Usage: "show build queue",
|
|
ArgsUsage: "",
|
|
Action: buildQueue,
|
|
Flags: []cli.Flag{
|
|
cli.StringFlag{
|
|
Name: "format",
|
|
Usage: "format output",
|
|
Value: tmplBuildQueue,
|
|
},
|
|
cli.StringFlag{
|
|
Name: "repo",
|
|
Usage: "repo filter",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "branch",
|
|
Usage: "branch filter",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "event",
|
|
Usage: "event filter",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "status",
|
|
Usage: "status filter",
|
|
},
|
|
},
|
|
}
|
|
|
|
func buildQueue(c *cli.Context) error {
|
|
client, err := internal.NewClient(c)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
repos, err := client.Incomplete()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
tmpl, err := template.New("_").Funcs(funcmap.Funcs).Parse(c.String("format") + "\n")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
slug := c.String("repo")
|
|
branch := c.String("branch")
|
|
event := c.String("event")
|
|
status := c.String("status")
|
|
|
|
for _, repo := range repos {
|
|
if slug != "" && repo.Slug != slug {
|
|
continue
|
|
}
|
|
if branch != "" && repo.Build.Target != branch {
|
|
continue
|
|
}
|
|
if event != "" && repo.Build.Event != event {
|
|
continue
|
|
}
|
|
if status != "" && repo.Build.Status != status {
|
|
continue
|
|
}
|
|
tmpl.Execute(os.Stdout, repo)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// template for build queue information
|
|
var tmplBuildQueue = "\x1b[33m{{ .Slug }}#{{ .Build.Number }} \x1b[0m" + `
|
|
Name: {{ .Slug }}
|
|
Build: {{ .Build.Number }}
|
|
Status: {{ .Build.Status }}
|
|
Event: {{ .Build.Event }}
|
|
Branch: {{ .Build.Target }}
|
|
Ref: {{ .Build.Ref }}
|
|
Author: {{ .Build.Author }}{{ if .Build.AuthorEmail }} <{{ .Build.AuthorEmail }}>{{ end }}
|
|
Created: {{ .Build.Created | time }}
|
|
Started: {{ .Build.Started | time }}
|
|
Updated: {{ .Build.Updated | time }}
|
|
`
|