mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
Add lists of authored and assigned issues in GitLab project
This commit is contained in:
parent
6b67baa65f
commit
149228dd1c
@ -27,6 +27,12 @@ func (widget *Widget) content() (string, string, bool) {
|
||||
str += "\n"
|
||||
str += " [red]My Merge Requests[white]\n"
|
||||
str += widget.displayMyMergeRequests(project, widget.settings.username)
|
||||
str += "\n"
|
||||
str += " [red]Open Assigned Issues[white]\n"
|
||||
str += widget.displayMyAssignedIssues(project, widget.settings.username)
|
||||
str += "\n"
|
||||
str += " [red]My Issues[white]\n"
|
||||
str += widget.displayMyIssues(project, widget.settings.username)
|
||||
|
||||
return title, str, false
|
||||
}
|
||||
@ -61,6 +67,36 @@ func (widget *Widget) displayMyApprovalRequests(project *GitlabProject, username
|
||||
return str
|
||||
}
|
||||
|
||||
func (widget *Widget) displayMyAssignedIssues(project *GitlabProject, username string) string {
|
||||
issues := project.myAssignedIssues(username)
|
||||
|
||||
if len(issues) == 0 {
|
||||
return " [grey]none[white]\n"
|
||||
}
|
||||
|
||||
str := ""
|
||||
for _, issue := range issues {
|
||||
str += fmt.Sprintf(" [green]%4d[white] %s\n", issue.IID, issue.Title)
|
||||
}
|
||||
|
||||
return str
|
||||
}
|
||||
|
||||
func (widget *Widget) displayMyIssues(project *GitlabProject, username string) string {
|
||||
issues := project.myIssues(username)
|
||||
|
||||
if len(issues) == 0 {
|
||||
return " [grey]none[white]\n"
|
||||
}
|
||||
|
||||
str := ""
|
||||
for _, issue := range issues {
|
||||
str += fmt.Sprintf(" [green]%4d[white] %s\n", issue.IID, issue.Title)
|
||||
}
|
||||
|
||||
return str
|
||||
}
|
||||
|
||||
func (widget *Widget) displayStats(project *GitlabProject) string {
|
||||
str := fmt.Sprintf(
|
||||
" MRs: %d Issues: %d Stars: %d\n",
|
||||
|
@ -9,6 +9,7 @@ type GitlabProject struct {
|
||||
path string
|
||||
|
||||
MergeRequests []*glb.MergeRequest
|
||||
Issues []*glb.Issue
|
||||
RemoteProject *glb.Project
|
||||
}
|
||||
|
||||
@ -25,6 +26,7 @@ func NewGitlabProject(projectPath string, client *glb.Client) *GitlabProject {
|
||||
func (project *GitlabProject) Refresh() {
|
||||
project.MergeRequests, _ = project.loadMergeRequests()
|
||||
project.RemoteProject, _ = project.loadRemoteProject()
|
||||
project.Issues, _ = project.loadIssues()
|
||||
}
|
||||
|
||||
/* -------------------- Counts -------------------- */
|
||||
@ -86,6 +88,32 @@ func (project *GitlabProject) myApprovalRequests(username string) []*glb.MergeRe
|
||||
return mrs
|
||||
}
|
||||
|
||||
// myAssignedIssues returns a list of issues for which username has been assigned
|
||||
func (project *GitlabProject) myAssignedIssues(username string) []*glb.Issue {
|
||||
issues := []*glb.Issue{}
|
||||
|
||||
for _, issue := range project.Issues {
|
||||
if issue.Assignee != nil && issue.Assignee.Username == username {
|
||||
issues = append(issues, issue)
|
||||
}
|
||||
}
|
||||
|
||||
return issues
|
||||
}
|
||||
|
||||
// myIssues returns a list of issues created by username on this project
|
||||
func (project *GitlabProject) myIssues(username string) []*glb.Issue {
|
||||
issues := []*glb.Issue{}
|
||||
|
||||
for _, issue := range project.Issues {
|
||||
if issue.Author.Username == username {
|
||||
issues = append(issues, issue)
|
||||
}
|
||||
}
|
||||
|
||||
return issues
|
||||
}
|
||||
|
||||
func (project *GitlabProject) loadMergeRequests() ([]*glb.MergeRequest, error) {
|
||||
state := "opened"
|
||||
opts := glb.ListProjectMergeRequestsOptions{
|
||||
@ -101,6 +129,21 @@ func (project *GitlabProject) loadMergeRequests() ([]*glb.MergeRequest, error) {
|
||||
return mrs, nil
|
||||
}
|
||||
|
||||
func (project *GitlabProject) loadIssues() ([]*glb.Issue, error) {
|
||||
state := "opened"
|
||||
opts := glb.ListProjectIssuesOptions{
|
||||
State: &state,
|
||||
}
|
||||
|
||||
issues, _, err := project.client.Issues.ListProjectIssues(project.path, &opts)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return issues, nil
|
||||
}
|
||||
|
||||
func (project *GitlabProject) loadRemoteProject() (*glb.Project, error) {
|
||||
projectsitory, _, err := project.client.Projects.GetProject(project.path, nil)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user