summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fi-pacmanlog/main.go67
1 files changed, 42 insertions, 25 deletions
diff --git a/fi-pacmanlog/main.go b/fi-pacmanlog/main.go
index d8d9a52..4d1a5df 100644
--- a/fi-pacmanlog/main.go
+++ b/fi-pacmanlog/main.go
@@ -17,6 +17,26 @@ func abort(err error) {
os.Exit(1)
}
+var _pkgbuild2pkgver = map[string]string{}
+
+func pkgbuild2pkgver(backend *libfastimport.Backend, pkgbuildId string) (ver string, err error) {
+ if _, ok := _pkgbuild2pkgver[pkgbuildId]; !ok {
+ _, pkgbuild, err := backend.CatBlob(libfastimport.CmdCatBlob{DataRef: pkgbuildId})
+ if err != nil {
+ return "", err
+ }
+ script := string(pkgbuild) + "\n" + `. "$(librelib messages)" && get_full_version` + "\n"
+ cmd := exec.Command("bash")
+ cmd.Stdin = strings.NewReader(script)
+ out, err := cmd.Output()
+ if err != nil {
+ return "", err
+ }
+ _pkgbuild2pkgver[pkgbuildId] = strings.TrimSpace(string(out))
+ }
+ return _pkgbuild2pkgver[pkgbuildId], nil
+}
+
func main() {
inref := os.Args[1]
outref := os.Args[2]
@@ -47,19 +67,12 @@ func main() {
case libfastimport.CmdCommitEnd:
ver := ""
for _, file := range commitFile {
+ // perhaps I should change this to be a map keyed on filename
if m, ok := file.(libfastimport.FileModify); ok && m.Path == "PKGBUILD" {
- _, pkgbuild, err := backend.CatBlob(libfastimport.CmdCatBlob{DataRef: m.DataRef})
- if err != nil {
- abort(err)
- }
- script := string(pkgbuild) + "\n" + `. "$(librelib messages)" && get_full_version` + "\n"
- cmd := exec.Command("bash")
- cmd.Stdin = strings.NewReader(script)
- out, err := cmd.Output()
+ ver, err = pkgbuild2pkgver(backend, m.DataRef)
if err != nil {
abort(err)
}
- ver = strings.TrimSpace(string(out))
}
}
if ver == "" || tags[ver] {
@@ -74,17 +87,31 @@ func main() {
abort(err)
}
for _, file := range commitFile {
+ switch filet := file.(type) {
+ case libfastimport.FileDeleteAll:
+ /* allow */
+ case libfastimport.FileModify:
+ switch {
+ case filet.Path == "chmod-fix.patch":
+ continue
+ case filet.Path == "PKGBUILD":
+ case strings.HasSuffix(string(filet.Path), ".patch"):
+ default:
+ continue
+ }
+ default:
+ abort(errors.Errorf("unexpected file action: %#v", file))
+ }
err = backend.Do(file)
if err != nil {
abort(err)
}
}
case libfastimport.FileModify:
- if !strings.HasPrefix(string(cmdt.Path), "repos/core-x86_64/") {
- break
+ if strings.HasPrefix(string(cmdt.Path), "repos/core-x86_64/") {
+ cmdt.Path = libfastimport.Path(strings.TrimPrefix(string(cmdt.Path), "repos/core-x86_64/"))
+ commitFile = append(commitFile, cmdt)
}
- cmdt.Path = libfastimport.Path(strings.TrimPrefix(string(cmdt.Path), "repos/core-x86_64/"))
- commitFile = append(commitFile, cmdt)
case libfastimport.FileDeleteAll:
commitFile = append(commitFile, cmd)
@@ -94,18 +121,8 @@ func main() {
if err != nil {
abort(err)
}
- case libfastimport.CmdFeature:
- err := backend.Do(cmdt)
- if err != nil {
- abort(err)
- }
- case libfastimport.CmdOption:
- err := backend.Do(cmdt)
- if err != nil {
- abort(err)
- }
- case libfastimport.CmdDone:
- err := backend.Do(cmdt)
+ case libfastimport.CmdFeature, libfastimport.CmdOption, libfastimport.CmdDone:
+ err := backend.Do(cmd)
if err != nil {
abort(err)
}