WIP: feat: add git-user and git-email flags to recipe new #405
|
@ -238,6 +238,22 @@ var RemoteUserFlag = &cli.StringFlag{
|
|||
Destination: &RemoteUser,
|
||||
}
|
||||
|
||||
var GitUser string
|
||||
var GitUserFlag = &cli.StringFlag{
|
||||
Name: "git-user, gu",
|
||||
Value: "",
|
||||
Usage: "Git user name to do commits with",
|
||||
Destination: &GitUser,
|
||||
}
|
||||
|
||||
var GitEmail string
|
||||
var GitEmailFlag = &cli.StringFlag{
|
||||
Name: "git-email, ge",
|
||||
Value: "",
|
||||
Usage: "Git email name to do commits with",
|
||||
Destination: &GitEmail,
|
||||
}
|
||||
|
||||
// SubCommandBefore wires up pre-action machinery (e.g. --debug handling).
|
||||
func SubCommandBefore(c *cli.Context) error {
|
||||
if Debug {
|
||||
|
|
|
@ -4,7 +4,6 @@ import (
|
|||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path"
|
||||
"text/template"
|
||||
|
@ -37,6 +36,8 @@ var recipeNewCommand = cli.Command{
|
|||
internal.DebugFlag,
|
||||
internal.NoInputFlag,
|
||||
internal.OfflineFlag,
|
||||
internal.GitUserFlag,
|
||||
internal.GitEmailFlag,
|
||||
},
|
||||
Before: internal.SubCommandBefore,
|
||||
Usage: "Create a new recipe",
|
||||
|
@ -92,14 +93,14 @@ recipe and domain in the sample environment config).
|
|||
logrus.Fatal(err)
|
||||
}
|
||||
|
||||
if err := ioutil.WriteFile(path, templated.Bytes(), 0644); err != nil {
|
||||
if err := os.WriteFile(path, templated.Bytes(), 0644); err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
newGitRepo := path.Join(config.RECIPES_DIR, recipeName)
|
||||
if err := git.Init(newGitRepo, true); err != nil {
|
||||
if err := git.Init(newGitRepo, true, internal.GitUser, internal.GitEmail); err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
|
||||
|
|
|
@ -1,35 +1,41 @@
|
|||
package git
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/go-git/go-git/v5"
|
||||
gitPkg "github.com/go-git/go-git/v5"
|
||||
"github.com/go-git/go-git/v5/plumbing/object"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// Init inits a new repo and commits all the stuff if you want
|
||||
func Init(repoPath string, commit bool) error {
|
||||
if _, err := gitPkg.PlainInit(repoPath, false); err != nil {
|
||||
logrus.Fatal(err)
|
||||
func Init(repoPath string, commit bool, gitUser, gitEmail string) error {
|
||||
if _, err := git.PlainInit(repoPath, false); err != nil {
|
||||
return fmt.Errorf("git init: %s", err)
|
||||
}
|
||||
logrus.Debugf("initialised new git repo in %s", repoPath)
|
||||
|
||||
if commit {
|
||||
commitRepo, err := git.PlainOpen(repoPath)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
return fmt.Errorf("git open: %s", err)
|
||||
}
|
||||
|
||||
commitWorktree, err := commitRepo.Worktree()
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
return fmt.Errorf("git worktree: %s", err)
|
||||
}
|
||||
|
||||
if err := commitWorktree.AddWithOptions(&git.AddOptions{All: true}); err != nil {
|
||||
return err
|
||||
return fmt.Errorf("git add: %s", err)
|
||||
}
|
||||
|
||||
if _, err = commitWorktree.Commit("init", &git.CommitOptions{}); err != nil {
|
||||
return err
|
||||
var author *object.Signature
|
||||
if gitUser != "" && gitEmail != "" {
|
||||
author = &object.Signature{Name: gitUser, Email: gitEmail}
|
||||
}
|
||||
if _, err = commitWorktree.Commit("init", &git.CommitOptions{Author: author}); err != nil {
|
||||
return fmt.Errorf("git commit: %s", err)
|
||||
}
|
||||
logrus.Debugf("init committed all files for new git repo in %s", repoPath)
|
||||
}
|
||||
|
|
|
@ -23,14 +23,14 @@ teardown(){
|
|||
}
|
||||
|
||||
@test "create new recipe" {
|
||||
run $ABRA recipe new foobar
|
||||
run $ABRA recipe new foobar --git-user foo --git-email foo@example.com
|
||||
assert_success
|
||||
assert_output --partial 'Your new foobar recipe has been created'
|
||||
assert_exists "$ABRA_DIR/recipes/foobar"
|
||||
}
|
||||
|
||||
@test "create new app from new recipe" {
|
||||
run $ABRA recipe new foobar
|
||||
run $ABRA recipe new foobar --git-user foo --git-email foo@example.com
|
||||
assert_success
|
||||
|
||||
run $ABRA app new foobar \
|
||||
|
|
Loading…
Reference in New Issue