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