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 += "\n"
|
||||||
str += " [red]My Merge Requests[white]\n"
|
str += " [red]My Merge Requests[white]\n"
|
||||||
str += widget.displayMyMergeRequests(project, widget.settings.username)
|
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
|
return title, str, false
|
||||||
}
|
}
|
||||||
@ -61,6 +67,36 @@ func (widget *Widget) displayMyApprovalRequests(project *GitlabProject, username
|
|||||||
return str
|
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 {
|
func (widget *Widget) displayStats(project *GitlabProject) string {
|
||||||
str := fmt.Sprintf(
|
str := fmt.Sprintf(
|
||||||
" MRs: %d Issues: %d Stars: %d\n",
|
" MRs: %d Issues: %d Stars: %d\n",
|
||||||
|
@ -9,6 +9,7 @@ type GitlabProject struct {
|
|||||||
path string
|
path string
|
||||||
|
|
||||||
MergeRequests []*glb.MergeRequest
|
MergeRequests []*glb.MergeRequest
|
||||||
|
Issues []*glb.Issue
|
||||||
RemoteProject *glb.Project
|
RemoteProject *glb.Project
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,6 +26,7 @@ func NewGitlabProject(projectPath string, client *glb.Client) *GitlabProject {
|
|||||||
func (project *GitlabProject) Refresh() {
|
func (project *GitlabProject) Refresh() {
|
||||||
project.MergeRequests, _ = project.loadMergeRequests()
|
project.MergeRequests, _ = project.loadMergeRequests()
|
||||||
project.RemoteProject, _ = project.loadRemoteProject()
|
project.RemoteProject, _ = project.loadRemoteProject()
|
||||||
|
project.Issues, _ = project.loadIssues()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------- Counts -------------------- */
|
/* -------------------- Counts -------------------- */
|
||||||
@ -86,6 +88,32 @@ func (project *GitlabProject) myApprovalRequests(username string) []*glb.MergeRe
|
|||||||
return mrs
|
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) {
|
func (project *GitlabProject) loadMergeRequests() ([]*glb.MergeRequest, error) {
|
||||||
state := "opened"
|
state := "opened"
|
||||||
opts := glb.ListProjectMergeRequestsOptions{
|
opts := glb.ListProjectMergeRequestsOptions{
|
||||||
@ -101,6 +129,21 @@ func (project *GitlabProject) loadMergeRequests() ([]*glb.MergeRequest, error) {
|
|||||||
return mrs, nil
|
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) {
|
func (project *GitlabProject) loadRemoteProject() (*glb.Project, error) {
|
||||||
projectsitory, _, err := project.client.Projects.GetProject(project.path, nil)
|
projectsitory, _, err := project.client.Projects.GetProject(project.path, nil)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user