diff --git a/examples/projects/main.go b/examples/projects/main.go index b3b73fb..8efc554 100644 --- a/examples/projects/main.go +++ b/examples/projects/main.go @@ -35,14 +35,24 @@ func main() { var method string flag.StringVar(&method, "m", "", "Specify method to retrieve projects infos, available methods:\n"+ " > -m projects\n"+ - " > -m project -id PROJECT_ID\n"+ - " > -m hooks -id PROJECT_ID\n"+ - " > -m branches -id PROJECT_ID\n"+ - " > -m team -id PROJECT_ID") + " > -m project -id PROJECT_ID\n"+ + " > -m hooks -id PROJECT_ID\n"+ + " > -m branches -id PROJECT_ID\n"+ + " > -m team -id PROJECT_ID\n"+ + " > -m merge_requests -id PROJECT_ID [-state ] [-order ] [-sort ]") var id string flag.StringVar(&id, "id", "", "Specify repository id") + var state string + flag.StringVar(&state, "state", "", "Specify merge request state") + + var order string + flag.StringVar(&order, "order", "", "Specify merge request order") + + var sort string + flag.StringVar(&sort, "sort", "", "Specify merge request sort") + flag.Usage = func() { fmt.Printf("Usage:\n") flag.PrintDefaults() @@ -158,5 +168,35 @@ func main() { for _, member := range members { fmt.Printf("> [%d] %s (%s) since %s\n", member.Id, member.Username, member.Name, member.CreatedAt) } + + case "merge_requests": + fmt.Println("Fetching project merge requests...") + + if id == "" { + flag.Usage() + return + } + + var params map[string]string = make(map[string]string) + if state != "" { + params["state"] = state + } + if order != "" { + params["order_by"] = order + } + if sort != "" { + params["sort"] = sort + } + + mrs, err := gitlab.ProjectMergeRequests(id, params) + if err != nil { + fmt.Println(err.Error()) + return + } + + for _, mr := range mrs { + fmt.Printf("> [%d] %s (+%d) by %s on %s.\n", mr.Id, mr.Title, mr.Upvotes, mr.Author.Name, mr.CreatedAt) + } + } } diff --git a/merge_requests.go b/merge_requests.go index c04dab3..60f58d6 100644 --- a/merge_requests.go +++ b/merge_requests.go @@ -23,6 +23,8 @@ type MergeRequest struct { ProjectId int `json:"project_id,omitempty"` Title string `json:"title,omitempty"` State string `json:"state,omitempty"` + CreatedAt string `json:"created_at,omitempty"` + UpdatedAt string `json:"updated_at,omitempty"` Upvotes int `json:"upvotes,omitempty"` Downvotes int `json:"downvotes,omitempty"` Author *User `json:"author,omitempty"` diff --git a/stubs/merge_requests/index.json b/stubs/merge_requests/index.json index 56ed3af..27adaab 100644 --- a/stubs/merge_requests/index.json +++ b/stubs/merge_requests/index.json @@ -7,6 +7,8 @@ "project_id": 3, "title": "test1", "state": "opened", + "created_at": "2016-05-20T13:58:19.283Z", + "updated_at": "2016-05-20T13:58:19.283Z", "upvotes": 0, "downvotes": 0, "author": { diff --git a/stubs/merge_requests/show.json b/stubs/merge_requests/show.json index 72e3e09..cdbdd33 100644 --- a/stubs/merge_requests/show.json +++ b/stubs/merge_requests/show.json @@ -6,6 +6,8 @@ "project_id": 3, "title": "test1", "state": "merged", + "created_at": "2016-05-20T13:58:19.283Z", + "updated_at": "2016-05-20T13:58:19.283Z", "upvotes": 0, "downvotes": 0, "author": {