Add tea comment and show comments of issues/pulls #313

Merged
6543 merged 10 commits from noerw/tea:issue-172-comments into master 2020-12-21 16:07:36 +00:00
3 changed files with 63 additions and 0 deletions
Showing only changes of commit 42887c9044 - Show all commits

56
cmd/comment.go Normal file
View File

@ -0,0 +1,56 @@
// Copyright 2020 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package cmd
import (
"fmt"
"strings"
"code.gitea.io/tea/modules/interact"
"code.gitea.io/sdk/gitea"
"code.gitea.io/tea/cmd/flags"
"code.gitea.io/tea/modules/context"
"code.gitea.io/tea/modules/utils"
"github.com/urfave/cli/v2"
)
// CmdAddComment is the main command to operate with notifications
var CmdAddComment = cli.Command{
Name: "comment",
Usage: "Add a comment to an issue / pr",
Description: "Add a comment to an issue / pr",
ArgsUsage: "<issue / pr index> [<comment body>]",
Action: runAddComment,
Flags: flags.AllDefaultFlags,
}
func runAddComment(cmd *cli.Context) error {
ctx := context.InitCommand(cmd)
ctx.Ensure(context.CtxRequirement{RemoteRepo: true})
args := ctx.Args()
if args.Len() == 0 {
return fmt.Errorf("Please specify issue / pr index")
}
idx, err := utils.ArgToIndex(ctx.Args().First())
if err != nil {
return err
}
body := strings.Join(ctx.Args().Tail(), " ")
if len(body) == 0 {
if body, err = interact.PromptMultiline("Content"); err != nil {
return err
}
}
client := ctx.Login.Client()
_, _, err = client.CreateIssueComment(ctx.Owner, ctx.Repo, idx, gitea.CreateIssueCommentOption{
Body: body,
})
return err
}

View File

@ -40,6 +40,7 @@ func main() {
&cmd.CmdMilestones,
&cmd.CmdOrgs,
&cmd.CmdAutocomplete,
&cmd.CmdAddComment,
}
app.EnableBashCompletion = true
err := app.Run(os.Args)

View File

@ -11,6 +11,12 @@ import (
"github.com/AlecAivazis/survey/v2"
)
// PromptMultiline runs a textfield-style prompt and blocks until input was made.
func PromptMultiline(message string) (content string, err error) {
err = survey.AskOne(&survey.Multiline{Message: message}, &content)
return
}
// PromptPassword asks for a password and blocks until input was made.
func PromptPassword(name string) (pass string, err error) {
promptPW := &survey.Password{Message: name + " password:"}