1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-02-03 13:21:56 +02:00

second commit

This commit is contained in:
Jesse Duffield 2018-05-13 14:52:20 +10:00
parent 4f2b1608b4
commit bcd5e65878
2 changed files with 65 additions and 14 deletions

BIN
hello-world Executable file

Binary file not shown.

View File

@ -9,23 +9,74 @@ import (
// "log"
"os/exec"
"os"
"strings"
"regexp"
)
func plus(a int, b int) int {
return a + b
}
// from https://gobyexample.com/collection-functions
func Map(vs []string, f func(string) string) []string {
vsm := make([]string, len(vs))
for i, v := range vs {
vsm[i] = f(v)
}
return vsm
}
func sanitisedFileString(fileString string) string {
r := regexp.MustCompile("\\s| \\(new commits\\)|.* ")
fileString = r.ReplaceAllString(fileString, "")
return fileString
}
func filesByMatches(statusString string, targets []string) []string {
files := make([]string, 0)
for _, target := range targets {
if strings.Index(statusString, target) == -1 {
continue
}
r := regexp.MustCompile("(?s)" + target + ".*?\n\n(.*?)\n\n")
fmt.Println(r)
matchedFileStrings := strings.Split(r.FindStringSubmatch(statusString)[1], "\n")
// fmt.Println(matchedFileStrings)
matchedFiles := Map(matchedFileStrings, sanitisedFileString)
// fmt.Println(matchedFiles)
files = append(files, matchedFiles...)
}
fmt.Println(files)
return files
}
func filesToStage(statusString string) []string {
targets := []string{"Changes not staged for commit:", "Untracked files:"}
return filesByMatches(statusString, targets)
}
func runCommand(cmd string) (string, error) {
splitCmd := strings.Split(cmd, " ")
fmt.Println(splitCmd)
cmdOut, err := exec.Command(splitCmd[0], splitCmd[1:]...).Output()
// if err != nil {
// os.Exit(1)
// }
return string(cmdOut), err
}
func main() {
var (
cmdOut []byte
err error
)
cmdName := "git"
cmdArgs := []string{"rev-parse", "--verify", "HEAD"}
if cmdOut, err = exec.Command(cmdName, cmdArgs...).Output(); err != nil {
fmt.Fprintln(os.Stderr, "There was an error running git rev-parse command: ", err)
fmt.Println(string(cmdOut))
os.Exit(1)
}
sha := string(cmdOut)
firstSix := sha[:6]
fmt.Println("The first six chars of the SHA at HEAD in this repo are", firstSix)
statusString, _ := runCommand("git status")
fmt.Println(filesToStage(statusString))
}