knotserver/git: refactor command runner #308

merged
opened by oppi.li targeting master from push-rqxyyurmpkps
Changed files
+42 -21
knotserver
+42
knotserver/git/cmd.go
···
+
package git
+
+
import (
+
"fmt"
+
"os/exec"
+
)
+
+
const (
+
fieldSeparator = "\x1f" // ASCII Unit Separator
+
recordSeparator = "\x1e" // ASCII Record Separator
+
)
+
+
func (g *GitRepo) runGitCmd(command string, extraArgs ...string) ([]byte, error) {
+
var args []string
+
args = append(args, command)
+
args = append(args, extraArgs...)
+
+
cmd := exec.Command("git", args...)
+
cmd.Dir = g.path
+
+
out, err := cmd.Output()
+
if err != nil {
+
if exitErr, ok := err.(*exec.ExitError); ok {
+
return nil, fmt.Errorf("%w, stderr: %s", err, string(exitErr.Stderr))
+
}
+
return nil, err
+
}
+
+
return out, nil
+
}
+
+
func (g *GitRepo) revList(extraArgs ...string) ([]byte, error) {
+
return g.runGitCmd("rev-list", extraArgs...)
+
}
+
+
func (g *GitRepo) forEachRef(extraArgs ...string) ([]byte, error) {
+
return g.runGitCmd("for-each-ref", extraArgs...)
+
}
+
+
func (g *GitRepo) revParse(extraArgs ...string) ([]byte, error) {
+
return g.runGitCmd("rev-parse", extraArgs...)
+
}
-21
knotserver/git/git.go
···
"fmt"
"io"
"io/fs"
-
"os/exec"
"path"
-
"sort"
"strconv"
"strings"
"time"
···
return count, nil
}
-
func (g *GitRepo) revList(extraArgs ...string) ([]byte, error) {
-
var args []string
-
args = append(args, "rev-list")
-
args = append(args, extraArgs...)
-
-
cmd := exec.Command("git", args...)
-
cmd.Dir = g.path
-
-
out, err := cmd.Output()
-
if err != nil {
-
if exitErr, ok := err.(*exec.ExitError); ok {
-
return nil, fmt.Errorf("%w, stderr: %s", err, string(exitErr.Stderr))
-
}
-
return nil, err
-
}
-
-
return out, nil
-
}
-
func (g *GitRepo) Commit(h plumbing.Hash) (*object.Commit, error) {
return g.r.CommitObject(h)
}