1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-30 03:23:08 +03:00

Extract EditRebaseTodo into a function in utils.rebaseTodo

We want to reuse it from the daemon code in the next commit.
This commit is contained in:
Stefan Haller
2023-04-06 07:04:25 +02:00
parent d50c58b4c6
commit ab25600ccb
2 changed files with 25 additions and 19 deletions

View File

@ -9,6 +9,29 @@ import (
"github.com/samber/lo"
)
// Read a git-rebase-todo file, change the action for the given sha to
// newAction, and write it back
func EditRebaseTodo(filePath string, sha string, oldAction todo.TodoCommand, newAction todo.TodoCommand) error {
todos, err := ReadRebaseTodoFile(filePath)
if err != nil {
return err
}
for i := range todos {
t := &todos[i]
// Comparing just the sha is not enough; we need to compare both the
// action and the sha, as the sha could appear multiple times (e.g. in a
// pick and later in a merge)
if t.Command == oldAction && equalShas(t.Commit, sha) {
t.Command = newAction
return WriteRebaseTodoFile(filePath, todos)
}
}
// Should never get here
return fmt.Errorf("Todo %s not found in git-rebase-todo", sha)
}
func equalShas(a, b string) bool {
return strings.HasPrefix(a, b) || strings.HasPrefix(b, a)
}