mirror of
https://gitea.com/jolheiser/sip
synced 2024-11-22 19:51:58 +01:00
Clean up and polish (#1)
Move issues validator Signed-off-by: jolheiser <john.olheiser@gmail.com> Comments Signed-off-by: jolheiser <john.olheiser@gmail.com> Package cleanup Signed-off-by: jolheiser <john.olheiser@gmail.com> Co-authored-by: jolheiser <john.olheiser@gmail.com> Reviewed-on: https://gitea.com/jolheiser/sip/pulls/1
This commit is contained in:
parent
20df4b7f69
commit
427ecdb7f1
11
cmd/cmd.go
11
cmd/cmd.go
@ -2,13 +2,11 @@ package cmd
|
||||
|
||||
import (
|
||||
"code.gitea.io/sdk/gitea"
|
||||
"errors"
|
||||
"fmt"
|
||||
"gitea.com/jolheiser/sip/modules/config"
|
||||
"gitea.com/jolheiser/sip/modules/git"
|
||||
"github.com/AlecAivazis/survey/v2"
|
||||
"github.com/urfave/cli/v2"
|
||||
"strings"
|
||||
"sync"
|
||||
)
|
||||
|
||||
@ -109,12 +107,3 @@ func getOriginRepo() []string {
|
||||
func fullName(ctx *cli.Context) string {
|
||||
return ctx.String("owner") + "/" + ctx.String("repo")
|
||||
}
|
||||
|
||||
func validateFullName(ans interface{}) error {
|
||||
fullName := ans.(string)
|
||||
ownerRepo := strings.Split(fullName, "/")
|
||||
if len(ownerRepo) != 2 {
|
||||
return errors.New("full repo name should be in form `owner/repo`")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -2,11 +2,12 @@ package cmd
|
||||
|
||||
import (
|
||||
"code.gitea.io/sdk/gitea"
|
||||
"errors"
|
||||
"fmt"
|
||||
"gitea.com/jolheiser/beaver"
|
||||
"gitea.com/jolheiser/beaver/color"
|
||||
"gitea.com/jolheiser/sip/modules/markdown"
|
||||
"gitea.com/jolheiser/sip/modules/sdk"
|
||||
"gitea.com/jolheiser/sip/modules/stdout"
|
||||
"github.com/AlecAivazis/survey/v2"
|
||||
"github.com/urfave/cli/v2"
|
||||
"strconv"
|
||||
@ -41,7 +42,7 @@ func issuesSearch(ctx *cli.Context, pulls bool) (*gitea.Issue, error) {
|
||||
}
|
||||
|
||||
if len(issues) == 0 {
|
||||
stdout.Red("No " + typ + " found")
|
||||
beaver.Errorf("No %s found!", typ)
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
@ -125,3 +126,12 @@ func queryIssues(ctx *cli.Context, client *gitea.Client, pulls bool) ([]*gitea.I
|
||||
|
||||
return filtered, nil
|
||||
}
|
||||
|
||||
func validateFullName(ans interface{}) error {
|
||||
fullName := ans.(string)
|
||||
ownerRepo := strings.Split(fullName, "/")
|
||||
if len(ownerRepo) != 2 {
|
||||
return errors.New("full repo name should be in form `owner/repo`")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
16
cmd/repo.go
16
cmd/repo.go
@ -32,11 +32,19 @@ func doRepo(ctx *cli.Context) error {
|
||||
issueCount++
|
||||
}
|
||||
|
||||
beaver.Infof("Repository: %s", color.New(color.FgYellow).Format(ctx.String("owner")+"/"+ctx.String("repo")))
|
||||
beaver.Infof("URL: %s", color.New(color.FgYellow).Format(ctx.String("url")+"/"+ctx.String("owner")+"/"+ctx.String("repo")))
|
||||
forks, err := sdk.GetForks(client, ctx.String("owner"), ctx.String("repo"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
yellow := color.New(color.FgYellow)
|
||||
beaver.Infof("Repository: %s", yellow.Format(ctx.String("owner")+"/"+ctx.String("repo")))
|
||||
beaver.Infof("URL: %s", yellow.Format(ctx.String("url")+"/"+ctx.String("owner")+"/"+ctx.String("repo")))
|
||||
beaver.Info()
|
||||
beaver.Infof("Open Issues: %s", color.New(color.FgYellow).Format(strconv.Itoa(issueCount)))
|
||||
beaver.Infof("Open Pulls: %s", color.New(color.FgYellow).Format(strconv.Itoa(pullCount)))
|
||||
beaver.Infof("Open Issues: %s", yellow.Format(strconv.Itoa(issueCount)))
|
||||
beaver.Infof("Open Pulls: %s", yellow.Format(strconv.Itoa(pullCount)))
|
||||
beaver.Info()
|
||||
beaver.Infof("Forks: %s", yellow.Format(strconv.Itoa(len(forks))))
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package cmd
|
||||
|
||||
import (
|
||||
"gitea.com/jolheiser/beaver"
|
||||
"gitea.com/jolheiser/beaver/color"
|
||||
"gitea.com/jolheiser/sip/modules/config"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
@ -18,6 +19,9 @@ var Tokens = cli.Command{
|
||||
}
|
||||
|
||||
func doTokenList(ctx *cli.Context) error {
|
||||
if len(config.Tokens) == 0 {
|
||||
beaver.Errorf("No tokens found! Add one with %s", color.New(color.FgMagenta).Format("sip token create"))
|
||||
}
|
||||
for idx, token := range config.Tokens {
|
||||
beaver.Infof("%d. %s (%s)", idx+1, token.Name, token.URL)
|
||||
}
|
||||
|
@ -10,9 +10,10 @@ import (
|
||||
)
|
||||
|
||||
var TokensAdd = cli.Command{
|
||||
Name: "add",
|
||||
Usage: "Add a new access token",
|
||||
Action: doTokenAdd,
|
||||
Name: "add",
|
||||
Aliases: []string{"create"},
|
||||
Usage: "Add a new access token",
|
||||
Action: doTokenAdd,
|
||||
}
|
||||
|
||||
func doTokenAdd(ctx *cli.Context) error {
|
||||
@ -23,11 +24,6 @@ func doTokenAdd(ctx *cli.Context) error {
|
||||
Prompt: &survey.Input{Message: "Local nickname for this token", Default: "gitea"},
|
||||
Validate: validateTokenName,
|
||||
},
|
||||
{
|
||||
Name: "token",
|
||||
Prompt: &survey.Input{Message: "Name for this token in Gitea", Default: "sip"},
|
||||
Validate: survey.Required,
|
||||
},
|
||||
{
|
||||
Name: "url",
|
||||
Prompt: &survey.Input{Message: "URL for the Gitea instance", Default: ctx.String("url")},
|
||||
@ -35,9 +31,8 @@ func doTokenAdd(ctx *cli.Context) error {
|
||||
},
|
||||
}
|
||||
answers := struct {
|
||||
Name string
|
||||
Token string
|
||||
URL string
|
||||
Name string
|
||||
URL string
|
||||
}{}
|
||||
|
||||
if err := survey.Ask(questions, &answers); err != nil {
|
||||
@ -45,7 +40,13 @@ func doTokenAdd(ctx *cli.Context) error {
|
||||
}
|
||||
|
||||
if token == "" {
|
||||
authQuestions := []*survey.Question{
|
||||
giteaQuestions := []*survey.Question{
|
||||
|
||||
{
|
||||
Name: "token",
|
||||
Prompt: &survey.Input{Message: "Name for this token in Gitea", Default: "sip"},
|
||||
Validate: survey.Required,
|
||||
},
|
||||
{
|
||||
Name: "username",
|
||||
Prompt: &survey.Input{Message: "Username for the Gitea instance"},
|
||||
@ -57,18 +58,19 @@ func doTokenAdd(ctx *cli.Context) error {
|
||||
Validate: survey.Required,
|
||||
},
|
||||
}
|
||||
authAnswers := struct {
|
||||
giteaAnswers := struct {
|
||||
Token string
|
||||
Username string
|
||||
Password string
|
||||
}{}
|
||||
|
||||
if err := survey.Ask(authQuestions, &authAnswers); err != nil {
|
||||
if err := survey.Ask(giteaQuestions, &giteaAnswers); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
client := gitea.NewClient(answers.URL, "")
|
||||
|
||||
t, err := client.CreateAccessToken(authAnswers.Username, authAnswers.Password, gitea.CreateAccessTokenOption{Name: answers.Token})
|
||||
t, err := client.CreateAccessToken(giteaAnswers.Username, giteaAnswers.Password, gitea.CreateAccessTokenOption{Name: giteaAnswers.Token})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -9,9 +9,10 @@ import (
|
||||
)
|
||||
|
||||
var TokensRemove = cli.Command{
|
||||
Name: "remove",
|
||||
Usage: "Remove access tokens",
|
||||
Action: doTokenRemove,
|
||||
Name: "remove",
|
||||
Aliases: []string{"delete"},
|
||||
Usage: "Remove access tokens",
|
||||
Action: doTokenRemove,
|
||||
}
|
||||
|
||||
func doTokenRemove(ctx *cli.Context) error {
|
||||
|
3
main.go
3
main.go
@ -10,6 +10,9 @@ import (
|
||||
var Version = "develop"
|
||||
|
||||
func main() {
|
||||
|
||||
// config loads on init
|
||||
|
||||
app := cli.NewApp()
|
||||
app.Name = "Sip"
|
||||
app.Usage = "Command line tool to interact with Gitea"
|
||||
|
@ -13,6 +13,7 @@ var (
|
||||
configPath string
|
||||
cfg *config
|
||||
|
||||
// Config items
|
||||
Origin string
|
||||
Upstream string
|
||||
Tokens []Token
|
||||
@ -30,6 +31,7 @@ type Token struct {
|
||||
Token string `toml:"token"`
|
||||
}
|
||||
|
||||
// Load on init so that CLI contexts are correctly populated
|
||||
func init() {
|
||||
home, err := homedir.Dir()
|
||||
if err != nil {
|
||||
|
16
modules/sdk/repo.go
Normal file
16
modules/sdk/repo.go
Normal file
@ -0,0 +1,16 @@
|
||||
package sdk
|
||||
|
||||
import "code.gitea.io/sdk/gitea"
|
||||
|
||||
// GetForks returns all of a repository's forks
|
||||
// TODO Update to handle paging when SDK supports
|
||||
func GetForks(client *gitea.Client, owner, repo string) ([]*gitea.Repository, error) {
|
||||
repos, err := client.ListForks(owner, repo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return repos, nil
|
||||
}
|
||||
|
||||
// TODO List Stargazers when SDK supports
|
||||
// TODO List Watchers when SDK supports
|
@ -1,19 +0,0 @@
|
||||
package stdout
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"gitea.com/jolheiser/beaver/color"
|
||||
)
|
||||
|
||||
var (
|
||||
red = color.New(color.FgRed)
|
||||
green = color.New(color.FgGreen)
|
||||
)
|
||||
|
||||
func Red(format string, args ...interface{}) {
|
||||
fmt.Println(red.Format(fmt.Sprintf(format, args...)))
|
||||
}
|
||||
|
||||
func Green(format string, args ...interface{}) {
|
||||
fmt.Println(green.Format(fmt.Sprintf(format, args...)))
|
||||
}
|
Loading…
Reference in New Issue
Block a user