diff --git a/common.go b/common.go index 520d12b..6f9ff2f 100644 --- a/common.go +++ b/common.go @@ -1,7 +1,9 @@ package repostatus import ( + "errors" "os" + "path/filepath" "strings" "unicode" @@ -59,18 +61,40 @@ func (rs *RepoStatus) IsPrimitive() bool { return false } -func (rs *RepoStatus) IsProtobuf() (bool, []string, []string, error) { +func (rs *RepoStatus) IsProtobuf() (bool, []string, error) { log.Info("are there .proto files in:", rs.Path()) - all, compiled, err := ScanForProtobuf(rs.Path()) - var found bool = false - for i, s := range all { - log.Info("found i, s:", i, s) - found = true + fullp, fullc, err := ScanForProtobuf(rs.Path()) + protos := make(map[string]string) + protoc := make(map[string]string) + var anyfound bool = false + var allc []string + for _, s := range fullp { + filebase := filepath.Base(s) + name := strings.TrimSuffix(filebase, ".proto") + // log.Info("found i, s:", i, name, filebase) + anyfound = true + protos[name] = s } - for i, s := range compiled { - log.Info("found compiled i, s:", i, s) + for pname, _ := range protos { + var found bool = false + for _, s := range fullc { + cfilebase := filepath.Base(s) + cname := strings.TrimSuffix(cfilebase, ".pb.go") + // log.Info("found compiled i, s:", i, cname, cfilebase) + protoc[cname] = s + if cname == pname { + found = true + allc = append(allc, cfilebase) + } + } + if found { + // log.Info("found ok") + } else { + log.Info("not found") + err = errors.New("compiled file " + pname + ".pb.go missing") + } } - return found, all, compiled, err + return anyfound, allc, err } // returns the filesystem path to the repo