src.dualinventive.com/go/devsim/cmd/devsimd/server/repository.go

58 lines
1.3 KiB
Go

package main
import (
"context"
"log"
"src.dualinventive.com/go/devsim"
"src.dualinventive.com/go/devsim/daemon"
"src.dualinventive.com/go/devsim/repository"
)
type repositoryServer struct {
d *daemon.Daemon
}
func (r *repositoryServer) Info(req *devsim.RepositoryRequest, rif devsim.RepositoryService_InfoServer) error {
var repoList []repository.Repository
log.Println("Repo info", req)
if req.Uri == "" {
repoList = r.d.Repository.List()
} else {
repo, err := r.d.Repository.Find(req.Uri)
if err != nil {
return err
}
repoList = append(repoList, repo)
}
for _, repo := range repoList {
versions, err := repo.Versions()
if err != nil {
return err
}
err = rif.Send(&devsim.RepositoryInfo{Versions: versions, Uri: repo.URI()})
if err != nil {
log.Println(err)
return err
}
}
return nil
}
func (r *repositoryServer) Create(ctx context.Context, req *devsim.RepositoryRequest) (*devsim.RepositoryInfo, error) {
log.Println("Create repo", req)
err := r.d.Repository.Add(req.Uri)
return &devsim.RepositoryInfo{}, err
}
func (r *repositoryServer) Remove(ctx context.Context, req *devsim.RepositoryRequest) (*devsim.Empty, error) {
log.Println("Remove repo", req)
err := r.d.Repository.Remove(req.Uri)
return &devsim.Empty{}, err
}