mirror of
https://github.com/jesseduffield/lazygit.git
synced 2024-11-26 09:00:57 +02:00
37 lines
834 B
Go
37 lines
834 B
Go
package git
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type PatchParser struct {
|
|
Log *logrus.Entry
|
|
}
|
|
|
|
// NewPatchParser builds a new branch list builder
|
|
func NewPatchParser(log *logrus.Entry) (*PatchParser, error) {
|
|
return &PatchParser{
|
|
Log: log,
|
|
}, nil
|
|
}
|
|
|
|
func (p *PatchParser) ParsePatch(patch string) ([]int, []int, error) {
|
|
lines := strings.Split(patch, "\n")
|
|
hunkStarts := []int{}
|
|
stageableLines := []int{}
|
|
pastHeader := false
|
|
for index, line := range lines {
|
|
if strings.HasPrefix(line, "@@") {
|
|
pastHeader = true
|
|
hunkStarts = append(hunkStarts, index)
|
|
}
|
|
if pastHeader && (strings.HasPrefix(line, "-") || strings.HasPrefix(line, "+")) {
|
|
stageableLines = append(stageableLines, index)
|
|
}
|
|
}
|
|
p.Log.WithField("staging", "staging").Info(stageableLines)
|
|
return hunkStarts, stageableLines, nil
|
|
}
|