2020-03-06 05:21:56 +01:00
|
|
|
package cmd
|
|
|
|
|
|
|
|
import (
|
2020-05-07 03:09:31 +02:00
|
|
|
"strings"
|
|
|
|
|
2020-03-06 05:21:56 +01:00
|
|
|
"code.gitea.io/sdk/gitea"
|
|
|
|
"github.com/AlecAivazis/survey/v2"
|
|
|
|
"github.com/urfave/cli/v2"
|
|
|
|
"go.jolheiser.com/beaver"
|
|
|
|
"go.jolheiser.com/beaver/color"
|
|
|
|
)
|
|
|
|
|
|
|
|
var RepoCreate = cli.Command{
|
|
|
|
Name: "create",
|
|
|
|
Usage: "Create a new repository",
|
|
|
|
Action: doRepoCreate,
|
|
|
|
}
|
|
|
|
|
|
|
|
func doRepoCreate(ctx *cli.Context) error {
|
2020-04-17 05:59:12 +02:00
|
|
|
client, err := getClient(ctx, true)
|
2020-03-06 05:21:56 +01:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
questions := []*survey.Question{
|
|
|
|
{
|
|
|
|
Name: "name",
|
|
|
|
Prompt: &survey.Input{Message: "Name"},
|
|
|
|
Validate: survey.Required,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: "description",
|
|
|
|
Prompt: &survey.Input{Message: "Description"},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: "private",
|
|
|
|
Prompt: &survey.Confirm{Message: "Private", Default: true},
|
|
|
|
Validate: survey.Required,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: "auto",
|
|
|
|
Prompt: &survey.Confirm{Message: "Auto-initialize", Default: false},
|
|
|
|
Validate: survey.Required,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
answers := struct {
|
|
|
|
Name string
|
|
|
|
Description string
|
|
|
|
Private bool
|
|
|
|
Auto bool
|
|
|
|
}{}
|
|
|
|
|
|
|
|
if err := survey.Ask(questions, &answers); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
opts := gitea.CreateRepoOption{
|
|
|
|
Name: answers.Name,
|
|
|
|
Description: answers.Description,
|
|
|
|
Private: answers.Private,
|
|
|
|
AutoInit: answers.Auto,
|
|
|
|
}
|
|
|
|
|
|
|
|
if answers.Auto {
|
|
|
|
auto := autoOpts(client)
|
|
|
|
opts.Gitignores = strings.Join(auto.Gitignores, ",")
|
|
|
|
opts.License = auto.License
|
|
|
|
opts.Readme = auto.Readme
|
|
|
|
}
|
|
|
|
|
|
|
|
repo, err := client.CreateRepo(opts)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
beaver.Infof("Created new repo at %s", color.FgMagenta.Format(repo.HTMLURL))
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type autoInit struct {
|
|
|
|
Gitignores []string
|
|
|
|
License string
|
|
|
|
Readme string
|
|
|
|
}
|
|
|
|
|
|
|
|
func autoOpts(client *gitea.Client) autoInit {
|
|
|
|
// FIXME query gitignores, licenses, and readme when available in SDK
|
|
|
|
_ = client
|
|
|
|
return autoInit{Readme: "Default"}
|
|
|
|
}
|