diff options
Diffstat (limited to 'handleRepos.go')
| -rw-r--r-- | handleRepos.go | 61 |
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 +} |
