Skip to content

Commit 8ad8463

Browse files
committed
Make Args method take spreaded slice
1 parent 61f35cb commit 8ad8463

File tree

5 files changed

+84
-50
lines changed

5 files changed

+84
-50
lines changed

pkg/commands/git_commands/commit_file_loader.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,9 @@ func NewCommitFileLoader(common *common.Common, cmd oscommands.ICmdObjBuilder) *
2525
// GetFilesInDiff get the specified commit files
2626
func (self *CommitFileLoader) GetFilesInDiff(from string, to string, reverse bool) ([]*models.CommitFile, error) {
2727
cmdStr := NewGitCmd("diff").
28-
Arg("--submodule").
29-
Arg("--no-ext-diff").
30-
Arg("--name-status").
31-
Arg("-z").
32-
Arg("--no-renames").
28+
Args("--submodule", "--no-ext-diff", "--name-status", "-z", "--no-renames").
3329
ArgIf(reverse, "-R").
34-
Arg(from).
35-
Arg(to).
30+
Args(from, to).
3631
ToString()
3732

3833
filenames, err := self.cmd.New(cmdStr).DontLog().RunWithOutput()

pkg/commands/git_commands/commit_loader.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -203,11 +203,8 @@ func (self *CommitLoader) getHydratedRebasingCommits(rebaseMode enums.RebaseMode
203203
cmdObj := self.cmd.New(
204204
NewGitCmd("show").
205205
Config("log.showSignature=false").
206-
Arg("--no-patch").
207-
Arg("--oneline").
208-
Arg(strings.Join(commitShas, " ")).
209-
Arg(prettyFormat).
210-
Arg("--abbrev=20").
206+
Args("--no-patch", "--oneline", "--abbrev=20", prettyFormat).
207+
Args(commitShas...).
211208
ToString(),
212209
).DontLog()
213210

@@ -380,8 +377,7 @@ func (self *CommitLoader) getMergeBase(refName string) string {
380377

381378
output, err := self.cmd.New(
382379
NewGitCmd("merge-base").
383-
Arg(self.cmd.Quote(refName)).
384-
Arg(*self.quotedMainBranches).
380+
Args(self.cmd.Quote(refName), *self.quotedMainBranches).
385381
ToString(),
386382
).DontLog().RunWithOutput()
387383
if err != nil {
@@ -399,7 +395,7 @@ func (self *CommitLoader) getExistingMainBranches() string {
399395
func(branchName string, _ int) (string, bool) {
400396
quotedRef := self.cmd.Quote("refs/heads/" + branchName)
401397
if err := self.cmd.New(
402-
NewGitCmd("rev-parse").Arg("--verify").Arg("--quiet").Arg(quotedRef).ToString(),
398+
NewGitCmd("rev-parse").Args("--verify", "--quiet", quotedRef).ToString(),
403399
).DontLog().Run(); err != nil {
404400
return "", false
405401
}
@@ -423,8 +419,10 @@ func (self *CommitLoader) getFirstPushedCommit(refName string) (string, error) {
423419
output, err := self.cmd.
424420
New(
425421
NewGitCmd("merge-base").
426-
Arg(self.cmd.Quote(refName)).
427-
Arg(self.cmd.Quote(strings.TrimPrefix(refName, "refs/heads/")) + "@{u}").
422+
Args(
423+
self.cmd.Quote(refName),
424+
self.cmd.Quote(strings.TrimPrefix(refName, "refs/heads/"))+"@{u}",
425+
).
428426
ToString(),
429427
).
430428
DontLog().

pkg/commands/git_commands/git_command_builder.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func (self *GitCommandBuilder) ArgIfElse(isTrue bool, onTrue string, onFalse str
3838
}
3939
}
4040

41-
func (self *GitCommandBuilder) Args(args []string) *GitCommandBuilder {
41+
func (self *GitCommandBuilder) Args(args ...string) *GitCommandBuilder {
4242
for _, arg := range args {
4343
self.Arg(arg)
4444
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package git_commands
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
)
8+
9+
func TestGitCommandBuilder(t *testing.T) {
10+
scenarios := []struct {
11+
input string
12+
expected string
13+
}{
14+
{
15+
input: NewGitCmd("push").
16+
Arg("--force-with-lease").
17+
Arg("--set-upstream").
18+
Arg("origin").
19+
Arg("master").
20+
ToString(),
21+
expected: "git push --force-with-lease --set-upstream origin master",
22+
},
23+
{
24+
input: NewGitCmd("push").ArgIf(true, "--test").ToString(),
25+
expected: "git push --test",
26+
},
27+
{
28+
input: NewGitCmd("push").ArgIf(false, "--test").ToString(),
29+
expected: "git push",
30+
},
31+
{
32+
input: NewGitCmd("push").ArgIfElse(true, "-b", "-a").ToString(),
33+
expected: "git push -b",
34+
},
35+
{
36+
input: NewGitCmd("push").ArgIfElse(false, "-a", "-b").ToString(),
37+
expected: "git push -b",
38+
},
39+
{
40+
input: NewGitCmd("push").Args("-a", "-b").ToString(),
41+
expected: "git push -a -b",
42+
},
43+
{
44+
input: NewGitCmd("push").Config("user.name=foo").Config("user.email=bar").ToString(),
45+
expected: "git -c user.email=bar -c user.name=foo push",
46+
},
47+
{
48+
input: NewGitCmd("push").RepoPath("a/b/c").ToString(),
49+
expected: "git -C a/b/c push",
50+
},
51+
}
52+
53+
for _, s := range scenarios {
54+
assert.Equal(t, s.input, s.expected)
55+
}
56+
}

pkg/commands/git_commands/submodule.go

Lines changed: 17 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -83,66 +83,51 @@ func (self *SubmoduleCommands) Stash(submodule *models.SubmoduleConfig) error {
8383

8484
cmdStr := NewGitCmd("stash").
8585
RepoPath(self.cmd.Quote(submodule.Path)).
86-
Arg("--include-untracked").
86+
Args("--include-untracked").
8787
ToString()
8888

8989
return self.cmd.New(cmdStr).Run()
9090
}
9191

9292
func (self *SubmoduleCommands) Reset(submodule *models.SubmoduleConfig) error {
9393
cmdStr := NewGitCmd("submodule").
94-
Arg("update").
95-
Arg("--init").
96-
Arg("--force").
97-
Arg("--").
98-
Arg(self.cmd.Quote(submodule.Path)).
94+
Args("update", "--init", "--force", "--", self.cmd.Quote(submodule.Path)).
9995
ToString()
10096

10197
return self.cmd.New(cmdStr).Run()
10298
}
10399

104100
func (self *SubmoduleCommands) UpdateAll() error {
105101
// not doing an --init here because the user probably doesn't want that
106-
cmdStr := NewGitCmd("submodule").
107-
Arg("update").
108-
Arg("--force").
109-
ToString()
102+
cmdStr := NewGitCmd("submodule").Args("update", "--force").ToString()
110103

111104
return self.cmd.New(cmdStr).Run()
112105
}
113106

114107
func (self *SubmoduleCommands) Delete(submodule *models.SubmoduleConfig) error {
115108
// based on https://gist.github.com/myusuf3/7f645819ded92bda6677
116109

117-
deinitCmdStr := NewGitCmd("submodule").
118-
Arg("deinit").
119-
Arg("--force").
120-
Arg("--").
121-
Arg(self.cmd.Quote(submodule.Path)).
122-
ToString()
123-
124-
if err := self.cmd.New(deinitCmdStr).Run(); err != nil {
110+
if err := self.cmd.New(
111+
NewGitCmd("submodule").
112+
Args("deinit", "--force", "--", self.cmd.Quote(submodule.Path)).ToString(),
113+
).Run(); err != nil {
125114
if !strings.Contains(err.Error(), "did not match any file(s) known to git") {
126115
return err
127116
}
128117

129-
removeFileCmd := NewGitCmd("config").
130-
Arg("--file").
131-
Arg(".gitmodules").
132-
Arg("--remove-section").
133-
Arg("submodule." + self.cmd.Quote(submodule.Path)).
134-
ToString()
135-
136-
removeCmd := NewGitCmd("config").
137-
Arg("--remove-section").
138-
Arg("submodule." + self.cmd.Quote(submodule.Path)).
139-
ToString()
140-
141-
if err := self.cmd.New(removeFileCmd).Run(); err != nil {
118+
if err := self.cmd.New(
119+
NewGitCmd("config").
120+
Args("--file", ".gitmodules", "--remove-section", "submodule."+self.cmd.Quote(submodule.Path)).
121+
ToString(),
122+
).Run(); err != nil {
142123
return err
143124
}
144125

145-
if err := self.cmd.New(removeCmd).Run(); err != nil {
126+
if err := self.cmd.New(
127+
NewGitCmd("config").
128+
Args("--remove-section", "submodule."+self.cmd.Quote(submodule.Path)).
129+
ToString(),
130+
).Run(); err != nil {
146131
return err
147132
}
148133
}

0 commit comments

Comments
 (0)