From c72c6c0679147de205b521c965ee160e817dcfee Mon Sep 17 00:00:00 2001 From: vsysoev Date: Tue, 6 Jun 2023 13:25:36 +0000 Subject: [PATCH] issues list can show filtered by owner/org instead of repo too (#550) close #551 Co-authored-by: Sysoev, Vladimir Co-authored-by: 6543 <6543@obermui.de> Reviewed-on: https://gitea.com/gitea/tea/pulls/550 Reviewed-by: Lunny Xiao Reviewed-by: 6543 <6543@obermui.de> Co-authored-by: vsysoev Co-committed-by: vsysoev --- cmd/flags/issue_pr.go | 4 +++ cmd/issues/list.go | 58 +++++++++++++++++++++++++++++------------- modules/print/issue.go | 6 +++++ 3 files changed, 51 insertions(+), 17 deletions(-) diff --git a/cmd/flags/issue_pr.go b/cmd/flags/issue_pr.go index c16ccd9..4d2b2f8 100644 --- a/cmd/flags/issue_pr.go +++ b/cmd/flags/issue_pr.go @@ -71,6 +71,10 @@ var IssueListingFlags = append([]cli.Flag{ Name: "mentions", Aliases: []string{"M"}, }, + &cli.StringFlag{ + Name: "owner", + Aliases: []string{"org"}, + }, &cli.StringFlag{ Name: "from", Aliases: []string{"F"}, diff --git a/cmd/issues/list.go b/cmd/issues/list.go index b67680d..bc43f18 100644 --- a/cmd/issues/list.go +++ b/cmd/issues/list.go @@ -18,7 +18,7 @@ import ( ) var issueFieldsFlag = flags.FieldsFlag(print.IssueFields, []string{ - "index", "title", "state", "author", "milestone", "labels", + "index", "title", "state", "author", "milestone", "labels", "owner", "repo", }) // CmdIssuesList represents a sub command of issues to list issues @@ -35,7 +35,6 @@ var CmdIssuesList = cli.Command{ // RunIssuesList list issues func RunIssuesList(cmd *cli.Context) error { ctx := context.InitCommand(cmd) - ctx.Ensure(context.CtxRequirement{RemoteRepo: true}) state := gitea.StateOpen switch ctx.String("state") { @@ -75,27 +74,52 @@ func RunIssuesList(cmd *cli.Context) error { return err } } + owner := ctx.Owner + if ctx.IsSet("owner") { + owner = ctx.String("owner") + } // ignore error, as we don't do any input validation on these flags labels, _ := flags.LabelFilterFlag.GetValues(cmd) milestones, _ := flags.MilestoneFilterFlag.GetValues(cmd) + var issues []*gitea.Issue + if ctx.Repo != "" { + issues, _, err = ctx.Login.Client().ListRepoIssues(owner, ctx.Repo, gitea.ListIssueOption{ + ListOptions: ctx.GetListOptions(), + State: state, + Type: kind, + KeyWord: ctx.String("keyword"), + CreatedBy: ctx.String("author"), + AssignedBy: ctx.String("assigned-to"), + MentionedBy: ctx.String("mentions"), + Labels: labels, + Milestones: milestones, + Since: from, + Before: until, + }) - issues, _, err := ctx.Login.Client().ListRepoIssues(ctx.Owner, ctx.Repo, gitea.ListIssueOption{ - ListOptions: ctx.GetListOptions(), - State: state, - Type: kind, - KeyWord: ctx.String("keyword"), - CreatedBy: ctx.String("author"), - AssignedBy: ctx.String("assigned-to"), - MentionedBy: ctx.String("mentions"), - Labels: labels, - Milestones: milestones, - Since: from, - Before: until, - }) + if err != nil { + return err + } + } else { + issues, _, err = ctx.Login.Client().ListIssues(gitea.ListIssueOption{ + ListOptions: ctx.GetListOptions(), + State: state, + Type: kind, + KeyWord: ctx.String("keyword"), + CreatedBy: ctx.String("author"), + AssignedBy: ctx.String("assigned-to"), + MentionedBy: ctx.String("mentions"), + Labels: labels, + Milestones: milestones, + Since: from, + Before: until, + Owner: owner, + }) - if err != nil { - return err + if err != nil { + return err + } } fields, err := issueFieldsFlag.GetValues(cmd) diff --git a/modules/print/issue.go b/modules/print/issue.go index 6478f1f..52d5bf1 100644 --- a/modules/print/issue.go +++ b/modules/print/issue.go @@ -70,6 +70,8 @@ var IssueFields = []string{ "milestone", "labels", "comments", + "owner", + "repo", } func printIssues(issues []*gitea.Issue, output string, fields []string) { @@ -146,6 +148,10 @@ func (x printableIssue) FormatField(field string, machineReadable bool) string { return strings.Join(assignees, " ") case "comments": return fmt.Sprintf("%d", x.Comments) + case "owner": + return x.Repository.Owner + case "repo": + return x.Repository.Name } return "" }