diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2023-05-19 20:18:02 +1000 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2023-05-20 20:54:24 +1000 |
commit | 25f8b0337e1e023fd9575ecd46467810c9f49824 (patch) | |
tree | da4937d66b110d6f69621c79d98c3d9ce9384b41 /pkg/commands/git_commands/stash.go | |
parent | 63ddc52a6b0b69b656b106ee5ae74dd736ac6317 (diff) |
Add convenience builder for git commands
Diffstat (limited to 'pkg/commands/git_commands/stash.go')
-rw-r--r-- | pkg/commands/git_commands/stash.go | 98 |
1 files changed, 68 insertions, 30 deletions
diff --git a/pkg/commands/git_commands/stash.go b/pkg/commands/git_commands/stash.go index 54164e736..0033883a5 100644 --- a/pkg/commands/git_commands/stash.go +++ b/pkg/commands/git_commands/stash.go @@ -26,68 +26,94 @@ func NewStashCommands( } func (self *StashCommands) DropNewest() error { - return self.cmd.New("git stash drop").Run() + cmdStr := NewGitCmd("stash").Arg("drop").ToString() + + return self.cmd.New(cmdStr).Run() } func (self *StashCommands) Drop(index int) error { - return self.cmd.New(fmt.Sprintf("git stash drop stash@{%d}", index)).Run() + cmdStr := NewGitCmd("stash").Arg("drop", fmt.Sprintf("stash@{%d}", index)). + ToString() + + return self.cmd.New(cmdStr).Run() } func (self *StashCommands) Pop(index int) error { - return self.cmd.New(fmt.Sprintf("git stash pop stash@{%d}", index)).Run() + cmdStr := NewGitCmd("stash").Arg("pop", fmt.Sprintf("stash@{%d}", index)). + ToString() + + return self.cmd.New(cmdStr).Run() } func (self *StashCommands) Apply(index int) error { - return self.cmd.New(fmt.Sprintf("git stash apply stash@{%d}", index)).Run() + cmdStr := NewGitCmd("stash").Arg("apply", fmt.Sprintf("stash@{%d}", index)). + ToString() + + return self.cmd.New(cmdStr).Run() } // Save save stash func (self *StashCommands) Save(message string) error { - return self.cmd.New("git stash save " + self.cmd.Quote(message)).Run() + cmdStr := NewGitCmd("stash").Arg("save", self.cmd.Quote(message)). + ToString() + + return self.cmd.New(cmdStr).Run() } func (self *StashCommands) Store(sha string, message string) error { trimmedMessage := strings.Trim(message, " \t") - if len(trimmedMessage) > 0 { - return self.cmd.New(fmt.Sprintf("git stash store %s -m %s", self.cmd.Quote(sha), self.cmd.Quote(trimmedMessage))).Run() - } - return self.cmd.New(fmt.Sprintf("git stash store %s", self.cmd.Quote(sha))).Run() + + cmdStr := NewGitCmd("stash").Arg("store", self.cmd.Quote(sha)). + ArgIf(trimmedMessage != "", "-m", self.cmd.Quote(trimmedMessage)). + ToString() + + return self.cmd.New(cmdStr).Run() } func (self *StashCommands) Sha(index int) (string, error) { - sha, _, err := self.cmd.New(fmt.Sprintf("git rev-parse refs/stash@{%d}", index)).DontLog().RunWithOutputs() + cmdStr := NewGitCmd("rev-parse"). + Arg(fmt.Sprintf("refs/stash@{%d}", index)). + ToString() + + sha, _, err := self.cmd.New(cmdStr).DontLog().RunWithOutputs() return strings.Trim(sha, "\r\n"), err } func (self *StashCommands) ShowStashEntryCmdObj(index int, ignoreWhitespace bool) oscommands.ICmdObj { - ignoreWhitespaceFlag := "" - if ignoreWhitespace { - ignoreWhitespaceFlag = " --ignore-all-space" - } - - cmdStr := fmt.Sprintf( - "git stash show -p --stat --color=%s --unified=%d%s stash@{%d}", - self.UserConfig.Git.Paging.ColorArg, - self.UserConfig.Git.DiffContextSize, - ignoreWhitespaceFlag, - index, - ) + cmdStr := NewGitCmd("stash").Arg("show"). + Arg("-p"). + Arg("--stat"). + Arg(fmt.Sprintf("--color=%s", self.UserConfig.Git.Paging.ColorArg)). + Arg(fmt.Sprintf("--unified=%d", self.UserConfig.Git.DiffContextSize)). + ArgIf(ignoreWhitespace, "--ignore-all-space"). + Arg(fmt.Sprintf("stash@{%d}", index)). + ToString() return self.cmd.New(cmdStr).DontLog() } func (self *StashCommands) StashAndKeepIndex(message string) error { - return self.cmd.New(fmt.Sprintf("git stash save %s --keep-index", self.cmd.Quote(message))).Run() + cmdStr := NewGitCmd("stash").Arg("save", self.cmd.Quote(message), "--keep-index"). + ToString() + + return self.cmd.New(cmdStr).Run() } func (self *StashCommands) StashUnstagedChanges(message string) error { - if err := self.cmd.New("git commit --no-verify -m \"[lazygit] stashing unstaged changes\"").Run(); err != nil { + if err := self.cmd.New( + NewGitCmd("commit"). + Arg("--no-verify", "-m", self.cmd.Quote("[lazygit] stashing unstaged changes")). + ToString(), + ).Run(); err != nil { return err } if err := self.Save(message); err != nil { return err } - if err := self.cmd.New("git reset --soft HEAD^").Run(); err != nil { + + if err := self.cmd.New( + NewGitCmd("reset").Arg("--soft", "HEAD^").ToString(), + ).Run(); err != nil { return err } return nil @@ -97,7 +123,9 @@ func (self *StashCommands) StashUnstagedChanges(message string) error { // shoutouts to Joe on https://stackoverflow.com/questions/14759748/stashing-only-staged-changes-in-git-is-it-possible func (self *StashCommands) SaveStagedChanges(message string) error { // wrap in 'writing', which uses a mutex - if err := self.cmd.New("git stash --keep-index").Run(); err != nil { + if err := self.cmd.New( + NewGitCmd("stash").Arg("--keep-index").ToString(), + ).Run(); err != nil { return err } @@ -105,15 +133,22 @@ func (self *StashCommands) SaveStagedChanges(message string) error { return err } - if err := self.cmd.New("git stash apply stash@{1}").Run(); err != nil { + if err := self.cmd.New( + NewGitCmd("stash").Arg("apply", "stash@{1}").ToString(), + ).Run(); err != nil { return err } - if err := self.os.PipeCommands("git stash show -p", "git apply -R"); err != nil { + if err := self.os.PipeCommands( + NewGitCmd("stash").Arg("show", "-p").ToString(), + NewGitCmd("apply").Arg("-R").ToString(), + ); err != nil { return err } - if err := self.cmd.New("git stash drop stash@{1}").Run(); err != nil { + if err := self.cmd.New( + NewGitCmd("stash").Arg("drop", "stash@{1}").ToString(), + ).Run(); err != nil { return err } @@ -135,7 +170,10 @@ func (self *StashCommands) SaveStagedChanges(message string) error { } func (self *StashCommands) StashIncludeUntrackedChanges(message string) error { - return self.cmd.New(fmt.Sprintf("git stash save %s --include-untracked", self.cmd.Quote(message))).Run() + return self.cmd.New( + NewGitCmd("stash").Arg("save", self.cmd.Quote(message), "--include-untracked"). + ToString(), + ).Run() } func (self *StashCommands) Rename(index int, message string) error { |