diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2017-12-03 23:59:24 -0500 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2017-12-03 23:59:24 -0500 |
commit | 216b2fdf8b6ccc128a797a396253a57a3e09d43f (patch) | |
tree | 2c57e214321b5fe39a4ca834def48aad00fc54f3 | |
parent | c7c07febf54e043483a20c190021335ae2f43716 (diff) |
fi-pacmanlog: more
-rw-r--r-- | fi-pacmanlog/main.go | 67 |
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) } |