mirror of
https://github.com/harness/drone.git
synced 2025-05-12 06:59:54 +08:00
Remove types dependency from gitrpc package, add back commits/content api (#36)
This commit is contained in:
parent
0a7857f660
commit
7317ec9d62
@ -9,6 +9,8 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/google/wire"
|
||||
"github.com/harness/gitness/internal/gitrpc"
|
||||
"github.com/harness/gitness/types"
|
||||
|
||||
"github.com/kelseyhightower/envconfig"
|
||||
@ -45,3 +47,22 @@ func ensureGitRootIsSet(config *types.Config) error {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// PackageConfigsWireSet contains providers that generate configs required for sub packages.
|
||||
var PackageConfigsWireSet = wire.NewSet(
|
||||
ProvideGitRPCServerConfig,
|
||||
ProvideGitRPCClientConfig,
|
||||
)
|
||||
|
||||
func ProvideGitRPCServerConfig(config *types.Config) *gitrpc.ServerConfig {
|
||||
return &gitrpc.ServerConfig{
|
||||
Bind: config.Server.GRPC.Bind,
|
||||
GitRoot: config.Git.Root,
|
||||
}
|
||||
}
|
||||
|
||||
func ProvideGitRPCClientConfig(config *types.Config) *gitrpc.ClientConfig {
|
||||
return &gitrpc.ClientConfig{
|
||||
Bind: config.Server.GRPC.Bind,
|
||||
}
|
||||
}
|
||||
|
@ -33,6 +33,7 @@ import (
|
||||
func initSystem(ctx context.Context, config *gitnessTypes.Config) (*system, error) {
|
||||
wire.Build(
|
||||
newSystem,
|
||||
PackageConfigsWireSet,
|
||||
bootstrap.WireSet,
|
||||
database.WireSet,
|
||||
memory.WireSet,
|
||||
|
@ -78,17 +78,19 @@ func initSystem(ctx context.Context, config *types.Config) (*system, error) {
|
||||
spaceStore := database.ProvideSpaceStore(db)
|
||||
repoStore := database.ProvideRepoStore(db)
|
||||
spaceController := space.NewController(authorizer, spaceStore, repoStore, serviceAccountStore)
|
||||
gitrpcInterface, err := gitrpc.ProvideClient(config)
|
||||
clientConfig := ProvideGitRPCClientConfig(config)
|
||||
gitrpcInterface, err := gitrpc.ProvideClient(clientConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
repoController := repo.NewController(authorizer, spaceStore, repoStore, serviceAccountStore, gitrpcInterface)
|
||||
repoController := repo.ProvideController(authorizer, spaceStore, repoStore, serviceAccountStore, gitrpcInterface)
|
||||
apiHandler := router.ProvideAPIHandler(systemStore, authenticator, accountClient, spaceController, repoController)
|
||||
gitHandler := router2.ProvideGitHandler(repoStore, authenticator)
|
||||
webHandler := router2.ProvideWebHandler(systemStore)
|
||||
routerRouter := router2.ProvideRouter(apiHandler, gitHandler, webHandler)
|
||||
serverServer := server.ProvideServer(config, routerRouter)
|
||||
gitrpcServer, err := gitrpc.ProvideServer(config)
|
||||
serverConfig := ProvideGitRPCServerConfig(config)
|
||||
gitrpcServer, err := gitrpc.ProvideServer(serverConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -31,6 +31,7 @@ import (
|
||||
func initSystem(ctx context.Context, config *types.Config) (*system, error) {
|
||||
wire.Build(
|
||||
newSystem,
|
||||
PackageConfigsWireSet,
|
||||
bootstrap.WireSet,
|
||||
database.WireSet,
|
||||
memory.WireSet,
|
||||
|
@ -41,7 +41,8 @@ func initSystem(ctx context.Context, config *types.Config) (*system, error) {
|
||||
authenticator := authn.ProvideAuthenticator(userStore, serviceAccountStore, tokenStore)
|
||||
spaceStore := database.ProvideSpaceStore(db)
|
||||
repoStore := database.ProvideRepoStore(db)
|
||||
gitrpcInterface, err := gitrpc.ProvideClient(config)
|
||||
clientConfig := ProvideGitRPCClientConfig(config)
|
||||
gitrpcInterface, err := gitrpc.ProvideClient(clientConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -53,7 +54,8 @@ func initSystem(ctx context.Context, config *types.Config) (*system, error) {
|
||||
webHandler := router.ProvideWebHandler(systemStore)
|
||||
routerRouter := router.ProvideRouter(apiHandler, gitHandler, webHandler)
|
||||
serverServer := server.ProvideServer(config, routerRouter)
|
||||
gitrpcServer, err := gitrpc.ProvideServer(config)
|
||||
serverConfig := ProvideGitRPCServerConfig(config)
|
||||
gitrpcServer, err := gitrpc.ProvideServer(serverConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -240,14 +240,16 @@ func (c *Controller) getDirContent(ctx context.Context, gitRepoUID string, gitRe
|
||||
return nil, fmt.Errorf("failed to get content of dir: %w", err)
|
||||
}
|
||||
|
||||
entries := make([]ContentInfo, 0, len(output.Nodes))
|
||||
for _, v := range output.Nodes {
|
||||
entries := make([]ContentInfo, len(output.Nodes))
|
||||
for i := range output.Nodes {
|
||||
node := output.Nodes[i]
|
||||
|
||||
var entry *ContentInfo
|
||||
entry, err = mapToContentInfo(&v.TreeNode, v.Commit)
|
||||
entry, err = mapToContentInfo(&node.TreeNode, node.Commit)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
entries = append(entries, *entry)
|
||||
entries[i] = *entry
|
||||
}
|
||||
|
||||
return &DirContent{
|
||||
|
@ -43,10 +43,9 @@ func (c *Controller) ListCommits(ctx context.Context, session *auth.Session,
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
commits := make([]Commit, 0, len(rpcOut.Commits))
|
||||
for _, rpcCommit := range rpcOut.Commits {
|
||||
commit := mapCommit(rpcCommit)
|
||||
commits = append(commits, commit)
|
||||
commits := make([]Commit, len(rpcOut.Commits))
|
||||
for i := range rpcOut.Commits {
|
||||
commits[i] = mapCommit(rpcOut.Commits[i])
|
||||
}
|
||||
|
||||
return commits, rpcOut.TotalCount, nil
|
||||
|
@ -4,7 +4,13 @@
|
||||
|
||||
package gitrpc
|
||||
|
||||
type Config struct {
|
||||
RepoRoot string
|
||||
RPCAddress string
|
||||
// ServerConfig represents the configuration for the gitrpc server.
|
||||
type ServerConfig struct {
|
||||
GitRoot string
|
||||
Bind string
|
||||
}
|
||||
|
||||
// ClientConfig represents the config for the gitrpc client.
|
||||
type ClientConfig struct {
|
||||
Bind string
|
||||
}
|
||||
|
@ -231,26 +231,28 @@ func (g giteaAdapter) ListTreeNodes(ctx context.Context, repoPath string,
|
||||
return nil, fmt.Errorf("failed to list entries for tree '%s': %w", treePath, err)
|
||||
}
|
||||
|
||||
nodes := make([]treeNode, 0, len(giteaEntries))
|
||||
for _, giteaNode := range giteaEntries {
|
||||
nodes := make([]treeNode, len(giteaEntries))
|
||||
for i := range giteaEntries {
|
||||
giteaEntry := giteaEntries[i]
|
||||
|
||||
var nodeType treeNodeType
|
||||
var mode treeNodeMode
|
||||
nodeType, mode, err = mapGiteaNodeToTreeNodeModeAndType(giteaNode.Mode())
|
||||
nodeType, mode, err = mapGiteaNodeToTreeNodeModeAndType(giteaEntry.Mode())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// giteaNode.Name() returns the path of the node relative to the tree.
|
||||
relPath := giteaNode.Name()
|
||||
relPath := giteaEntry.Name()
|
||||
name := filepath.Base(relPath)
|
||||
|
||||
nodes = append(nodes, treeNode{
|
||||
nodes[i] = treeNode{
|
||||
nodeType: nodeType,
|
||||
mode: mode,
|
||||
sha: giteaNode.ID.String(),
|
||||
sha: giteaEntry.ID.String(),
|
||||
name: name,
|
||||
path: filepath.Join(treePath, relPath),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return nodes, nil
|
||||
@ -282,14 +284,14 @@ func (g giteaAdapter) ListCommits(ctx context.Context, repoPath string,
|
||||
return nil, 0, fmt.Errorf("error getting total commit count: %w", err)
|
||||
}
|
||||
|
||||
commits := make([]commit, 0, len(giteaCommits))
|
||||
for _, giteaCommit := range giteaCommits {
|
||||
commits := make([]commit, len(giteaCommits))
|
||||
for i := range giteaCommits {
|
||||
var commit *commit
|
||||
commit, err = mapGiteaCommit(giteaCommit)
|
||||
commit, err = mapGiteaCommit(giteaCommits[i])
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
commits = append(commits, *commit)
|
||||
commits[i] = *commit
|
||||
}
|
||||
|
||||
// TODO: save to cast to int from int64, or we expect exceeding int.MaxValue?
|
||||
|
@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.27.1
|
||||
// protoc v3.19.4
|
||||
// protoc-gen-go v1.28.1
|
||||
// protoc v3.21.7
|
||||
// source: repo.proto
|
||||
|
||||
package rpc
|
||||
|
@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
||||
// versions:
|
||||
// - protoc-gen-go-grpc v1.2.0
|
||||
// - protoc v3.19.4
|
||||
// - protoc v3.21.7
|
||||
// source: repo.proto
|
||||
|
||||
package rpc
|
||||
|
@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.27.1
|
||||
// protoc v3.19.4
|
||||
// protoc-gen-go v1.28.1
|
||||
// protoc v3.21.7
|
||||
// source: shared.proto
|
||||
|
||||
package rpc
|
||||
|
@ -6,7 +6,6 @@ package gitrpc
|
||||
|
||||
import (
|
||||
"github.com/google/wire"
|
||||
"github.com/harness/gitness/types"
|
||||
)
|
||||
|
||||
// WireSet provides a wire set for this package.
|
||||
@ -15,10 +14,10 @@ var WireSet = wire.NewSet(
|
||||
ProvideServer,
|
||||
)
|
||||
|
||||
func ProvideClient(config *types.Config) (Interface, error) {
|
||||
return InitClient(config.Server.GRPC.Bind)
|
||||
func ProvideClient(config *ClientConfig) (Interface, error) {
|
||||
return InitClient(config.Bind)
|
||||
}
|
||||
|
||||
func ProvideServer(config *types.Config) (*Server, error) {
|
||||
return NewServer(config.Server.GRPC.Bind, config.Git.Root)
|
||||
func ProvideServer(config *ServerConfig) (*Server, error) {
|
||||
return NewServer(config.Bind, config.GitRoot)
|
||||
}
|
||||
|
@ -153,6 +153,8 @@ func setupRepos(r chi.Router, config *types.Config, repoCtrl *repo.Controller) {
|
||||
|
||||
r.Post("/move", handlerrepo.HandleMove(repoCtrl))
|
||||
r.Get("/serviceAccounts", handlerrepo.HandleListServiceAccounts(repoCtrl))
|
||||
r.Get("/commits", handlerrepo.HandleListCommits(repoCtrl))
|
||||
r.Get("/content/*", handlerrepo.HandleGetContent(repoCtrl))
|
||||
|
||||
// repo path operations
|
||||
r.Route("/paths", func(r chi.Router) {
|
||||
|
@ -54,6 +54,7 @@ func NewWebHandler(systemStore store.SystemStore) WebHandler {
|
||||
)
|
||||
|
||||
// openapi playground endpoints
|
||||
// TODO: this should not be generated and marshaled on the fly every time?
|
||||
r.HandleFunc("/openapi.yaml", func(w http.ResponseWriter, r *http.Request) {
|
||||
spec := openapi.Generate()
|
||||
data, err := spec.MarshalYAML()
|
||||
|
Loading…
Reference in New Issue
Block a user