issues list can show filtered by owner/org instead of repo too (#550)

close #551

Co-authored-by: Sysoev, Vladimir <vladimir.sysoev@sarov-itc.ru>
Co-authored-by: 6543 <6543@obermui.de>
Reviewed-on: https://gitea.com/gitea/tea/pulls/550
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-by: 6543 <6543@obermui.de>
Co-authored-by: vsysoev <vsysoev@noreply.gitea.com>
Co-committed-by: vsysoev <vsysoev@noreply.gitea.com>
This commit is contained in:
vsysoev 2023-06-06 13:25:36 +00:00 committed by 6543
parent b2d845b8c7
commit c72c6c0679
3 changed files with 51 additions and 17 deletions

View File

@ -71,6 +71,10 @@ var IssueListingFlags = append([]cli.Flag{
Name: "mentions", Name: "mentions",
Aliases: []string{"M"}, Aliases: []string{"M"},
}, },
&cli.StringFlag{
Name: "owner",
Aliases: []string{"org"},
},
&cli.StringFlag{ &cli.StringFlag{
Name: "from", Name: "from",
Aliases: []string{"F"}, Aliases: []string{"F"},

View File

@ -18,7 +18,7 @@ import (
) )
var issueFieldsFlag = flags.FieldsFlag(print.IssueFields, []string{ 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 // CmdIssuesList represents a sub command of issues to list issues
@ -35,7 +35,6 @@ var CmdIssuesList = cli.Command{
// RunIssuesList list issues // RunIssuesList list issues
func RunIssuesList(cmd *cli.Context) error { func RunIssuesList(cmd *cli.Context) error {
ctx := context.InitCommand(cmd) ctx := context.InitCommand(cmd)
ctx.Ensure(context.CtxRequirement{RemoteRepo: true})
state := gitea.StateOpen state := gitea.StateOpen
switch ctx.String("state") { switch ctx.String("state") {
@ -75,27 +74,52 @@ func RunIssuesList(cmd *cli.Context) error {
return err 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 // ignore error, as we don't do any input validation on these flags
labels, _ := flags.LabelFilterFlag.GetValues(cmd) labels, _ := flags.LabelFilterFlag.GetValues(cmd)
milestones, _ := flags.MilestoneFilterFlag.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{ if err != nil {
ListOptions: ctx.GetListOptions(), return err
State: state, }
Type: kind, } else {
KeyWord: ctx.String("keyword"), issues, _, err = ctx.Login.Client().ListIssues(gitea.ListIssueOption{
CreatedBy: ctx.String("author"), ListOptions: ctx.GetListOptions(),
AssignedBy: ctx.String("assigned-to"), State: state,
MentionedBy: ctx.String("mentions"), Type: kind,
Labels: labels, KeyWord: ctx.String("keyword"),
Milestones: milestones, CreatedBy: ctx.String("author"),
Since: from, AssignedBy: ctx.String("assigned-to"),
Before: until, MentionedBy: ctx.String("mentions"),
}) Labels: labels,
Milestones: milestones,
Since: from,
Before: until,
Owner: owner,
})
if err != nil { if err != nil {
return err return err
}
} }
fields, err := issueFieldsFlag.GetValues(cmd) fields, err := issueFieldsFlag.GetValues(cmd)

View File

@ -70,6 +70,8 @@ var IssueFields = []string{
"milestone", "milestone",
"labels", "labels",
"comments", "comments",
"owner",
"repo",
} }
func printIssues(issues []*gitea.Issue, output string, fields []string) { 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, " ") return strings.Join(assignees, " ")
case "comments": case "comments":
return fmt.Sprintf("%d", x.Comments) return fmt.Sprintf("%d", x.Comments)
case "owner":
return x.Repository.Owner
case "repo":
return x.Repository.Name
} }
return "" return ""
} }