added drone status command to query latest build for a repo from cli

This commit is contained in:
Brad Rydzewski 2014-08-12 22:14:25 -07:00
parent 88c15ecc8e
commit 1e2cb13e7c
4 changed files with 58 additions and 8 deletions

View file

@ -13,7 +13,7 @@ type CommitService struct {
// GET /v1/repos/{host}/{owner}/{name}/branch/{branch}/commit/{commit} // GET /v1/repos/{host}/{owner}/{name}/branch/{branch}/commit/{commit}
func (s *CommitService) Get(host, owner, name, branch, sha string) (*model.Commit, error) { func (s *CommitService) Get(host, owner, name, branch, sha string) (*model.Commit, error) {
var path = fmt.Sprintf("/v1/repos/%s/%s/%s/branch/%s/commit/%s", host, owner, name, branch, sha) var path = fmt.Sprintf("/v1/repos/%s/%s/%s/branches/%s/commits/%s", host, owner, name, branch, sha)
var commit = model.Commit{} var commit = model.Commit{}
var err = s.run("GET", path, nil, &commit) var err = s.run("GET", path, nil, &commit)
return &commit, err return &commit, err
@ -21,7 +21,7 @@ func (s *CommitService) Get(host, owner, name, branch, sha string) (*model.Commi
// GET /v1/repos/{host}/{owner}/{name}/branches/{branch}/commits/{commit}/console // GET /v1/repos/{host}/{owner}/{name}/branches/{branch}/commits/{commit}/console
func (s *CommitService) GetOutput(host, owner, name, branch, sha string) (io.ReadCloser, error) { func (s *CommitService) GetOutput(host, owner, name, branch, sha string) (io.ReadCloser, error) {
var path = fmt.Sprintf("/v1/repos/%s/%s/%s/branch/%s/commit/%s/console", host, owner, name, branch, sha) var path = fmt.Sprintf("/v1/repos/%s/%s/%s/branches/%s/commits/%s/console", host, owner, name, branch, sha)
resp, err := s.do("GET", path) resp, err := s.do("GET", path)
if err != nil { if err != nil {
return nil, nil return nil, nil
@ -31,7 +31,7 @@ func (s *CommitService) GetOutput(host, owner, name, branch, sha string) (io.Rea
// POST /v1/repos/{host}/{owner}/{name}/branches/{branch}/commits/{commit}?action=rebuild // POST /v1/repos/{host}/{owner}/{name}/branches/{branch}/commits/{commit}?action=rebuild
func (s *CommitService) Rebuild(host, owner, name, branch, sha string) error { func (s *CommitService) Rebuild(host, owner, name, branch, sha string) error {
var path = fmt.Sprintf("/v1/repos/%s/%s/%s/branch/%s/commit/%s", host, owner, name, branch, sha) var path = fmt.Sprintf("/v1/repos/%s/%s/%s/branches/%s/commits/%s", host, owner, name, branch, sha)
return s.run("POST", path, nil, nil) return s.run("POST", path, nil, nil)
} }
@ -45,7 +45,7 @@ func (s *CommitService) List(host, owner, name string) ([]*model.Commit, error)
// GET /v1/repos/{host}/{owner}/{name}/branch/{branch} // GET /v1/repos/{host}/{owner}/{name}/branch/{branch}
func (s *CommitService) ListBranch(host, owner, name, branch string) ([]*model.Commit, error) { func (s *CommitService) ListBranch(host, owner, name, branch string) ([]*model.Commit, error) {
var path = fmt.Sprintf("/v1/repos/%s/%s/%s/branch/%s", host, owner, name, branch) var path = fmt.Sprintf("/v1/repos/%s/%s/%s/branches/%s/commits", host, owner, name, branch)
var list []*model.Commit var list []*model.Commit
var err = s.run("GET", path, nil, &list) var err = s.run("GET", path, nil, &list)
return list, err return list, err

View file

@ -34,6 +34,7 @@ func main() {
app.Commands = []cli.Command{ app.Commands = []cli.Command{
NewBuildCommand(), NewBuildCommand(),
NewReposCommand(), NewReposCommand(),
NewStatusCommand(),
NewEnableCommand(), NewEnableCommand(),
NewDisableCommand(), NewDisableCommand(),
NewRestartCommand(), NewRestartCommand(),

52
cmd/status.go Normal file
View file

@ -0,0 +1,52 @@
package main
import (
"fmt"
"github.com/codegangsta/cli"
"github.com/drone/drone/client"
)
// NewStatusCommand returns the CLI command for "status".
func NewStatusCommand() cli.Command {
return cli.Command{
Name: "status",
Usage: "display a repository build status",
Flags: []cli.Flag{
cli.StringFlag{
Name: "b, branch",
Usage: "branch to display",
},
},
Action: func(c *cli.Context) {
handle(c, statusCommandFunc)
},
}
}
// statusCommandFunc executes the "status" command.
func statusCommandFunc(c *cli.Context, client *client.Client) error {
var host, owner, repo, branch string
var args = c.Args()
if len(args) != 0 {
host, owner, repo = parseRepo(args[0])
}
if c.IsSet("branch") {
branch = c.String("branch")
} else {
branch = "master"
}
builds, err := client.Commits.ListBranch(host, owner, repo, branch)
if err != nil {
return err
} else if len(builds) == 0 {
return nil
}
var build = builds[len(builds)-1]
fmt.Printf("%s\t%s\t%s\t%s\t%v", build.Status, build.ShaShort(), build.Timestamp, build.Author, build.Message)
return nil
}

View file

@ -11,10 +11,7 @@ import (
func parseRepo(str string) (host, owner, repo string) { func parseRepo(str string) (host, owner, repo string) {
var parts = strings.Split(str, "/") var parts = strings.Split(str, "/")
if len(repo) != 3 { if len(parts) != 3 {
host = "undefined"
owner = "undefined"
repo = "undefined"
return return
} }
host = parts[0] host = parts[0]