summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2017-12-01 01:08:06 -0500
committerLuke Shumaker <lukeshu@lukeshu.com>2017-12-01 01:08:06 -0500
commitd6173b990219f9dbe770185856d5735286e4d0ad (patch)
tree25ec169574d3693048128a96d415bfbc09b7d913
parent97fb1c1311850908b2e625cf18ee584dc755a089 (diff)
pull some bits of fi-svntogit-to-aur into a shared fiutil
-rw-r--r--fi-svntogit-to-aur/filter.go7
-rw-r--r--fi-svntogit-to-aur/git.go85
-rw-r--r--fiutil/errors.go (renamed from fi-svntogit-to-aur/errors.go)2
-rw-r--r--fiutil/git.go91
4 files changed, 96 insertions, 89 deletions
diff --git a/fi-svntogit-to-aur/filter.go b/fi-svntogit-to-aur/filter.go
index 7312c73..07054c5 100644
--- a/fi-svntogit-to-aur/filter.go
+++ b/fi-svntogit-to-aur/filter.go
@@ -12,6 +12,7 @@ import (
"git.lukeshu.com/go/libfastimport"
"github.com/pkg/errors"
+ "git.parabola.nu/fiutil"
)
type fullcommit struct {
@@ -47,7 +48,7 @@ func NewFilter(fromRef string, toPfx string) (*Filter, error) {
return nil, err
}
- ret.frontend, err = gitFastExport(
+ ret.frontend, err = fiutil.GitFastExport(
"--use-done-feature",
"--no-data",
"--", fromRef)
@@ -55,7 +56,7 @@ func NewFilter(fromRef string, toPfx string) (*Filter, error) {
return nil, err
}
- ret.backend, err = gitFastImport("--done")
+ ret.backend, err = fiutil.GitFastImport("--done")
if err != nil {
return nil, err
}
@@ -107,7 +108,7 @@ func (f *Filter) pkgbuild2srcinfo(pkgbuildId string) (string, error) {
cmd.Dir = f.infofile("tmp")
srcinfoBody, err := cmd.Output()
if err != nil {
- return "", &ProcessError{ExitError: err.(*exec.ExitError), Cmd: "makepkg --printsrcinfo"}
+ return "", &fiutil.ProcessError{ExitError: err.(*exec.ExitError), Cmd: "makepkg --printsrcinfo"}
}
// Write the .SRCINFO back in to git
mark := f.newmark()
diff --git a/fi-svntogit-to-aur/git.go b/fi-svntogit-to-aur/git.go
index 09622b3..1b32859 100644
--- a/fi-svntogit-to-aur/git.go
+++ b/fi-svntogit-to-aur/git.go
@@ -1,97 +1,12 @@
package main
import (
- "bytes"
- "os"
"os/exec"
"strings"
- "git.lukeshu.com/go/libfastimport"
"github.com/pkg/errors"
)
-func gitFastExport(args ...string) (*libfastimport.Frontend, error) {
- cmd := exec.Command("git", append([]string{"fast-export"}, args...)...)
-
- stdout, err := cmd.StdoutPipe()
- if err != nil {
- return nil, err
- }
-
- var stderr bytes.Buffer
- cmd.Stderr = &stderr
-
- err = cmd.Start()
- if err != nil {
- return nil, err
- }
-
- frontend := libfastimport.NewFrontend(stdout, nil, func(err error) error {
- errs := ErrorCollector{}
-
- errs.Add(err)
-
- if err := cmd.Wait(); err != nil {
- if ee, ok := err.(*exec.ExitError); ok {
- ee.Stderr = stderr.Bytes()
- err = &ProcessError{ExitError: ee, Cmd: "git fast-export"}
- }
- errs.Add(err)
- }
-
- return errs.Err()
- })
-
- return frontend, nil
-}
-
-func gitFastImport(args ...string) (*libfastimport.Backend, error) {
- cmd := exec.Command("git", append([]string{"fast-import", "--cat-blob-fd=3"}, args...)...)
-
- pipr, pipw, err := os.Pipe()
- if err != nil {
- return nil, err
- }
-
- stdin, err := cmd.StdinPipe()
- if err != nil {
- return nil, err
- }
-
- cmd.Stdout = os.Stdout
-
- var stderr bytes.Buffer
- cmd.Stderr = &stderr
-
- cmd.ExtraFiles = []*os.File{pipw}
-
- err = cmd.Start()
- if err != nil {
- return nil, err
- }
- pipw.Close()
-
- backend := libfastimport.NewBackend(stdin, pipr, func(err error) error {
- errs := ErrorCollector{}
-
- errs.Add(err)
-
- stdin.Close()
- pipr.Close()
- if err = cmd.Wait(); err != nil {
- if ee, ok := err.(*exec.ExitError); ok {
- ee.Stderr = stderr.Bytes()
- err = &ProcessError{ExitError: ee, Cmd: "git fast-import"}
- }
- errs.Add(err)
- }
-
- return errs.Err()
- })
-
- return backend, nil
-}
-
func gitRefs() (map[string]string, error) {
cmd := exec.Command("git", "for-each-ref")
b, err := cmd.Output()
diff --git a/fi-svntogit-to-aur/errors.go b/fiutil/errors.go
index 681ef4f..631c3f1 100644
--- a/fi-svntogit-to-aur/errors.go
+++ b/fiutil/errors.go
@@ -1,4 +1,4 @@
-package main
+package fiutil
import (
"os/exec"
diff --git a/fiutil/git.go b/fiutil/git.go
new file mode 100644
index 0000000..18e4754
--- /dev/null
+++ b/fiutil/git.go
@@ -0,0 +1,91 @@
+package fiutil
+
+import (
+ "bytes"
+ "os"
+ "os/exec"
+
+ "git.lukeshu.com/go/libfastimport"
+)
+
+func GitFastExport(args ...string) (*libfastimport.Frontend, error) {
+ cmd := exec.Command("git", append([]string{"fast-export"}, args...)...)
+
+ stdout, err := cmd.StdoutPipe()
+ if err != nil {
+ return nil, err
+ }
+
+ var stderr bytes.Buffer
+ cmd.Stderr = &stderr
+
+ err = cmd.Start()
+ if err != nil {
+ return nil, err
+ }
+
+ frontend := libfastimport.NewFrontend(stdout, nil, func(err error) error {
+ errs := ErrorCollector{}
+
+ errs.Add(err)
+
+ if err := cmd.Wait(); err != nil {
+ if ee, ok := err.(*exec.ExitError); ok {
+ ee.Stderr = stderr.Bytes()
+ err = &ProcessError{ExitError: ee, Cmd: "git fast-export"}
+ }
+ errs.Add(err)
+ }
+
+ return errs.Err()
+ })
+
+ return frontend, nil
+}
+
+func GitFastImport(args ...string) (*libfastimport.Backend, error) {
+ cmd := exec.Command("git", append([]string{"fast-import", "--cat-blob-fd=3"}, args...)...)
+
+ pipr, pipw, err := os.Pipe()
+ if err != nil {
+ return nil, err
+ }
+
+ stdin, err := cmd.StdinPipe()
+ if err != nil {
+ return nil, err
+ }
+
+ cmd.Stdout = os.Stdout
+
+ var stderr bytes.Buffer
+ cmd.Stderr = &stderr
+
+ cmd.ExtraFiles = []*os.File{pipw}
+
+ err = cmd.Start()
+ if err != nil {
+ return nil, err
+ }
+ pipw.Close()
+
+ backend := libfastimport.NewBackend(stdin, pipr, func(err error) error {
+ errs := ErrorCollector{}
+
+ errs.Add(err)
+
+ stdin.Close()
+ pipr.Close()
+ if err = cmd.Wait(); err != nil {
+ if ee, ok := err.(*exec.ExitError); ok {
+ ee.Stderr = stderr.Bytes()
+ err = &ProcessError{ExitError: ee, Cmd: "git fast-import"}
+ }
+ errs.Add(err)
+ }
+
+ return errs.Err()
+ })
+
+ return backend, nil
+}