func Show(sha string) (string, error) { cmd := cmd.New("git") cmd.WithArg("show").WithArg("-s").WithArg("--format=%s%n%+b").WithArg(sha) output, err := cmd.CombinedOutput() output = strings.TrimSpace(output) return output, err }
func openTextEditor(program, file string) error { editCmd := cmd.New(program) r := regexp.MustCompile("[mg]?vi[m]$") if r.MatchString(program) { editCmd.WithArg("-c") editCmd.WithArg("set ft=gitcommit tw=0 wrap lbr") } editCmd.WithArg(file) return editCmd.Spawn() }
func Run(command string, args ...string) error { cmd := cmd.New("git") for _, v := range GlobalFlags { cmd.WithArg(v) } cmd.WithArg(command) for _, a := range args { cmd.WithArg(a) } return cmd.Run() }
func Log(sha1, sha2 string) (string, error) { execCmd := cmd.New("git") execCmd.WithArg("log").WithArg("--no-color") execCmd.WithArg("--format=%h (%aN, %ar)%n%w(78,3,3)%s%n%+b") execCmd.WithArg("--cherry") shaRange := fmt.Sprintf("%s...%s", sha1, sha2) execCmd.WithArg(shaRange) outputs, err := execCmd.CombinedOutput() if err != nil { return "", fmt.Errorf("Can't load git log %s..%s", sha1, sha2) } return outputs, nil }
func gitOutput(input ...string) (outputs []string, err error) { cmd := cmd.New("git") for _, v := range GlobalFlags { cmd.WithArg(v) } for _, i := range input { cmd.WithArg(i) } out, err := cmd.CombinedOutput() for _, line := range strings.Split(out, "\n") { line = strings.TrimSpace(line) if line != "" { outputs = append(outputs, string(line)) } } return outputs, err }