make issues & pulls subcommands consistent #188

Merged
lunny merged 2 commits from noerw/tea:pr-details into master 2020-09-21 05:03:22 +00:00
3 changed files with 55 additions and 15 deletions

View File

@ -53,6 +53,13 @@ var OutputFlag = cli.StringFlag{
Destination: &outputValue,
}
// StateFlag provides flag to specify issue/pr state, defaulting to "open"
var StateFlag = cli.StringFlag{
Name: "state",
Usage: "Filter by state (all|open|closed)",
DefaultText: "open",
}
// LoginOutputFlags defines login and output flags that should
// added to all subcommands and appended to the flags of the
// subcommand to work around issue and provide --login and --output:
@ -81,6 +88,11 @@ var AllDefaultFlags = append([]cli.Flag{
&RemoteFlag,
}, LoginOutputFlags...)
// IssuePRFlags defines flags that should be available on issue & pr listing flags.
var IssuePRFlags = append([]cli.Flag{
&StateFlag,
}, AllDefaultFlags...)
// initCommand returns repository and *Login based on flags
func initCommand() (*Login, string, string) {
var login *Login

View File

@ -28,7 +28,7 @@ var CmdIssues = cli.Command{
&CmdIssuesReopen,
&CmdIssuesClose,
},
Flags: AllDefaultFlags,
Flags: IssuePRFlags,
}
// CmdIssuesList represents a sub command of issues to list issues
@ -37,13 +37,7 @@ var CmdIssuesList = cli.Command{
Usage: "List issues of the repository",
Description: `List issues of the repository`,
Action: runIssuesList,
Flags: append([]cli.Flag{
&cli.StringFlag{
Name: "state",
Usage: "Filter by issue state (all|open|closed)",
DefaultText: "open",
},
}, AllDefaultFlags...),
Flags: IssuePRFlags,
}
func runIssues(ctx *cli.Context) error {

View File

@ -24,15 +24,11 @@ var CmdPulls = cli.Command{
Aliases: []string{"pull", "pr"},
Usage: "List open pull requests",
Description: `List open pull requests`,
ArgsUsage: "[<pull index>]",
Action: runPulls,
Flags: append([]cli.Flag{
&cli.StringFlag{
Name: "state",
Usage: "Filter by PR state (all|open|closed)",
DefaultText: "open",
},
}, AllDefaultFlags...),
Flags: IssuePRFlags,
Subcommands: []*cli.Command{
&CmdPullsList,
&CmdPullsCheckout,
&CmdPullsClean,
&CmdPullsCreate,
@ -40,6 +36,44 @@ var CmdPulls = cli.Command{
}
func runPulls(ctx *cli.Context) error {
if ctx.Args().Len() == 1 {
return runPullDetail(ctx, ctx.Args().First())
}
return runPullsList(ctx)
}
// CmdPullsList represents a sub command of issues to list pulls
var CmdPullsList = cli.Command{
Name: "ls",
Usage: "List pull requests of the repository",
Description: `List pull requests of the repository`,
Action: runPullsList,
Flags: IssuePRFlags,
}
func runPullDetail(ctx *cli.Context, index string) error {
login, owner, repo := initCommand()
idx, err := argToIndex(index)
if err != nil {
return err
}
pr, _, err := login.Client().GetPullRequest(owner, repo, idx)
if err != nil {
return err
}
// TODO: use glamour once #181 is merged
fmt.Printf("#%d %s\n%s created %s\n\n%s\n", pr.Index,
pr.Title,
pr.Poster.UserName,
pr.Created.Format("2006-01-02 15:04:05"),
pr.Body,
)
return nil
}
func runPullsList(ctx *cli.Context) error {
login, owner, repo := initCommand()
state := gitea.StateOpen