summaryrefslogtreecommitdiff
path: root/handleRepos.go
diff options
context:
space:
mode:
Diffstat (limited to 'handleRepos.go')
-rw-r--r--handleRepos.go61
1 files changed, 61 insertions, 0 deletions
diff --git a/handleRepos.go b/handleRepos.go
new file mode 100644
index 0000000..bf49a46
--- /dev/null
+++ b/handleRepos.go
@@ -0,0 +1,61 @@
+package main
+
+import (
+ "strings"
+
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/lib/protobuf/httppb"
+ "go.wit.com/log"
+)
+
+func handleRepos(pb *gitpb.Repos, route string) error {
+ log.Info("GOT PATCHES ROUTE", route, "with # patches =", pb.Len())
+ if strings.HasPrefix(route, "/patches/old") {
+ } else if strings.HasPrefix(route, "/patches/new") {
+ log.Info("add new patches")
+ } else {
+ log.Info("unknown route", route)
+ }
+
+ return nil
+}
+
+// returns a repo PB with just the master and devel branch versions
+// is just this information so it keeps things small when it's sent over the wire
+func getCurrentRepoVersions(namespace string) *gitpb.Repo {
+ newrepo := new(gitpb.Repo)
+ newrepo.Namespace = namespace
+ found := me.forge.Repos.FindByNamespace(namespace)
+ if found == nil {
+ // todo: clone repo here
+ return newrepo
+ }
+ newrepo.MasterHash = found.MasterHash
+ newrepo.DevelHash = found.DevelHash
+ newrepo.URL = found.URL
+ return newrepo
+}
+
+func pullRequest(pb *gitpb.Repos, reqPB *httppb.HttpRequest) *gitpb.Repos {
+ versionsPB := gitpb.NewRepos()
+ for repo := range pb.IterAll() {
+ found := getCurrentRepoVersions(repo.Namespace)
+ versionsPB.Append(found)
+ }
+ return versionsPB
+}
+
+func addRequest(pb *gitpb.Repos, reqPB *httppb.HttpRequest) *gitpb.Repos {
+ newReposPB := gitpb.NewRepos()
+ for repo := range pb.IterAll() {
+ if found := me.forge.Repos.FindByNamespace(repo.Namespace); found != nil {
+ // already know about this namespace
+ continue
+ }
+ newrepo := new(gitpb.Repo)
+ newrepo.Namespace = repo.Namespace
+ newrepo.URL = repo.URL
+ newReposPB.Append(newrepo)
+ }
+ return newReposPB
+}