From c2608f913f872da4848d404d7d1756eee70fdb82 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Mon, 6 May 2024 08:52:25 +0200 Subject: [PATCH] fix: use repo.Branch to init new repo (#110) --- git/init.go | 9 ++++++--- git/init_test.go | 31 ++++++++++++++++++++----------- git/status_test.go | 2 ++ plugin/impl.go | 14 +++++++------- 4 files changed, 35 insertions(+), 21 deletions(-) diff --git a/git/init.go b/git/init.go index 46dd28d..962c5f8 100644 --- a/git/init.go +++ b/git/init.go @@ -7,10 +7,13 @@ import ( // Init creates a new Git repository in the specified directory. func Init(repo Repository) *types.Cmd { - cmd := execabs.Command( - gitBin, + args := []string{ "init", - ) + "-b", + repo.Branch, + } + + cmd := execabs.Command(gitBin, args...) cmd.Dir = repo.WorkDir return &types.Cmd{ diff --git a/git/init_test.go b/git/init_test.go index 7c2457d..bb82790 100644 --- a/git/init_test.go +++ b/git/init_test.go @@ -7,17 +7,26 @@ import ( ) func TestInit(t *testing.T) { - repo := Repository{ - WorkDir: "/path/to/repo", + tests := []struct { + name string + repo Repository + expected []string + }{ + { + name: "init repo", + repo: Repository{ + WorkDir: "/path/to/repo", + Branch: "main", + }, + expected: []string{gitBin, "init", "-b", "main"}, + }, } - cmd := Init(repo) - require.Equal(t, []string{gitBin, "init"}, cmd.Cmd.Args) - require.Equal(t, repo.WorkDir, cmd.Cmd.Dir) - - // Test with an empty work directory - repo.WorkDir = "" - cmd = Init(repo) - require.Equal(t, []string{gitBin, "init"}, cmd.Cmd.Args) - require.Empty(t, cmd.Cmd.Dir) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cmd := Init(tt.repo) + require.Equal(t, tt.expected, cmd.Cmd.Args) + require.Equal(t, tt.repo.WorkDir, cmd.Cmd.Dir) + }) + } } diff --git a/git/status_test.go b/git/status_test.go index 054bf6b..9f12d65 100644 --- a/git/status_test.go +++ b/git/status_test.go @@ -54,6 +54,7 @@ func TestIsDirty(t *testing.T) { name: "dirty repo", repo: Repository{ WorkDir: t.TempDir(), + Branch: "main", }, want: true, }, @@ -61,6 +62,7 @@ func TestIsDirty(t *testing.T) { name: "clean repo", repo: Repository{ WorkDir: t.TempDir(), + Branch: "main", }, want: false, }, diff --git a/plugin/impl.go b/plugin/impl.go index 122a62c..c28d6d0 100644 --- a/plugin/impl.go +++ b/plugin/impl.go @@ -46,14 +46,14 @@ func (p *Plugin) run(ctx context.Context) error { func (p *Plugin) Validate() error { var err error - p.Settings.Repo.Autocorrect = "never" - p.Settings.Repo.RemoteName = "origin" - p.Settings.Repo.Add = "" - if p.Settings.Repo.WorkDir == "" { p.Settings.Repo.WorkDir, err = os.Getwd() } + p.Settings.Repo.Autocorrect = "never" + p.Settings.Repo.RemoteName = "origin" + p.Settings.Repo.Add = "" + if err != nil { return fmt.Errorf("failed to get working directory: %w", err) } @@ -102,6 +102,8 @@ func (p *Plugin) Validate() error { // Execute provides the implementation of the plugin. func (p *Plugin) Execute() error { + var err error + homeDir := getUserHomeDir() batchCmd := make([]*types.Cmd, 0) gitEnv := []string{ @@ -140,13 +142,11 @@ func (p *Plugin) Execute() error { return fmt.Errorf("failed to create working directory: %w", err) } - isEmpty, err := file.IsDirEmpty(p.Settings.Repo.WorkDir) + p.Settings.Repo.IsEmpty, err = file.IsDirEmpty(p.Settings.Repo.WorkDir) if err != nil { return fmt.Errorf("failed to check working directory: %w", err) } - p.Settings.Repo.IsEmpty = isEmpty - isDir, err := file.IsDir(filepath.Join(p.Settings.Repo.WorkDir, ".git")) if err != nil { return fmt.Errorf("failed to check working directory: %w", err)