in index.go [32:46]
func getCommitData(path string) (CommitData, error) {
dir, file := filepath.Split(path)
gitCmd := fmt.Sprintf("cd %s && git log --date=iso-strict \"%s\"", dir, file)
cmd := exec.Command("sh", "-c", gitCmd)
var out bytes.Buffer
cmd.Stdout = &out
if err := cmd.Run(); err != nil {
return CommitData{}, err
}
stdout := out.String()
reg := regexp.MustCompile("commit (.+)\nAuthor: (.*)\nDate: (.*)")
submatches := reg.FindSubmatch([]byte(stdout))
commitData := CommitData{Hash: string(submatches[1]), Author: strings.TrimSpace(string(submatches[2])), Date: strings.TrimSpace(string(submatches[3]))}
return commitData, nil
}