58 lines
1.3 KiB
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
|
|
}
|