diff --git a/Makefile b/Makefile index 0612c1c..a40c4b3 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .PHONY: build VERSION = $(shell git describe --tags) -BUILDTIME = $(shell date +%Y.%m.%d) +BUILDTIME = $(shell date +%Y.%m.%d_%H%M) all: build @echo "make build # build" diff --git a/doPatchsets.go b/doPatchsets.go index e696910..90d11c6 100644 --- a/doPatchsets.go +++ b/doPatchsets.go @@ -205,6 +205,7 @@ func lookupRepos(msg []byte) (*gitpb.Repos, error) { } return newpb, nil } + /* save the git.pb files + if repo.Namespace == "" { + log.Infof("repo: ERROR. no namespace. %s\n", repo.FullPath) @@ -237,3 +238,58 @@ func lookupRepos(msg []byte) (*gitpb.Repos, error) { + + log.Infof("repo path: %s\n", repopath) */ + +func updateRepos(msg []byte) (*gitpb.Repos, error) { + log.Info("proto.Unmarshal() try message len", len(msg)) + m := gitpb.NewRepos() + if err := m.Unmarshal(msg); err != nil { + log.Info("gitpb.Repos.Unmarshal() failed. len(msg) =", len(msg), err) + return m, err + } + newpb := gitpb.NewRepos() + log.Info("GOT repos:", len(msg)) + for repo := range m.IterAll() { + log.Infof("repo:%s,%s\n", repo.Namespace, repo.FullPath) + if repo.Namespace == "" { + log.Info("todo: namespace empty for", repo.FullPath) + continue + // return nil, fmt.Errorf("todo: namespace empty for " + repo.FullPath) + } + + // save the git.pb files + repopath := filepath.Join("/home/forge", repo.Namespace) + if !shell.IsDir(repopath) { + if err := os.MkdirAll(repopath, os.ModePerm); err != nil { + log.Warn("mkdir fail", repo.Namespace, err) + continue + } + } + + filename := filepath.Join(repopath, "git.pb") + log.Infof("update repo file %s\n", repopath) + // if !shell.Exists(filename) { + data, err := repo.Marshal() + if err != nil { + log.Info("patchsets.Marshal() to wire failed", err) + continue + } + gitpbf, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) + defer gitpbf.Close() + if err != nil { + log.Info("filename open error:", filename, err) + continue + } + gitpbf.Write(data) + // } + + // log.Infof("repo path: %s\n", repopath) + } + + /* + // print out found git.pb files + for repo := range newpb.IterAll() { + log.Infof("updated repo:%-14s,%s\n", repo.GetMasterVersion(), repo.Namespace) + } + */ + return newpb, nil +} diff --git a/http.go b/http.go index c48a42c..cb7d72e 100644 --- a/http.go +++ b/http.go @@ -45,6 +45,7 @@ func okHandler(w http.ResponseWriter, r *http.Request) { } if route == "/lookup" { + log.Info("doing lookup len(msg) =", len(msg)) found, err := lookupRepos(msg) if err != nil { return @@ -60,6 +61,17 @@ func okHandler(w http.ResponseWriter, r *http.Request) { return } + if route == "/update" { + log.Info("doing update len(msg) =", len(msg)) + found, err := updateRepos(msg) + if err != nil { + return + } + + found.SendPB(w) + return + } + if route == "/GetPatchsets" { doSendPatchsets(w) return