From 2d7af07415e7b843da03ef572f56057f6d5970ff Mon Sep 17 00:00:00 2001 From: mo khan Date: Fri, 25 Jul 2025 15:11:57 -0600 Subject: refactor: extract init to load ioc container with dependencies --- cmd/authzd/main.go | 51 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 11 deletions(-) (limited to 'cmd') diff --git a/cmd/authzd/main.go b/cmd/authzd/main.go index f79814c..ebc23f7 100644 --- a/cmd/authzd/main.go +++ b/cmd/authzd/main.go @@ -7,30 +7,58 @@ import ( "os/signal" "syscall" + "github.com/authzed/authzed-go/v1" + "github.com/rs/zerolog" "github.com/xlgmokha/x/pkg/env" + "github.com/xlgmokha/x/pkg/ioc" "github.com/xlgmokha/x/pkg/log" "github.com/xlgmokha/x/pkg/x" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/authz" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls" + "google.golang.org/grpc" ) +func init() { + c := ioc.Default + + ioc.RegisterSingleton[*zerolog.Logger](c, func() *zerolog.Logger { + return log.New(os.Stdout, log.Fields{"app": "authzd"}) + }) + ioc.RegisterSingleton[context.Context](c, func() context.Context { + logger := ioc.MustResolve[*zerolog.Logger](ioc.Default) + return logger.WithContext(context.Background()) + }) + + ioc.RegisterSingleton[*grpc.ClientConn](c, func() *grpc.ClientConn { + ctx := ioc.MustResolve[context.Context](ioc.Default) + return authz.NewGrpcConnection(ctx, env.Fetch("AUTHZD_HOST", ":20000")) + }) + + ioc.RegisterSingleton[*authzed.Client](c, func() *authzed.Client { + ctx := ioc.MustResolve[context.Context](ioc.Default) + return authz.NewSpiceDBClient( + ctx, + env.Fetch("ZED_ENDPOINT", ":50051"), + env.Fetch("ZED_TOKEN", "secret"), + ) + }) +} + func main() { - logger := log.New(os.Stdout, log.Fields{"app": "authzd"}) - ctx := logger.WithContext(context.Background()) + ctx := ioc.MustResolve[context.Context](ioc.Default) - connection := authz.NewGrpcConnection(ctx, env.Fetch("AUTHZD_HOST", ":20000")) + connection := ioc.MustResolve[*grpc.ClientConn](ioc.Default) defer connection.Close() - client := authz.NewSpiceDBClient( - ctx, - env.Fetch("ZED_ENDPOINT", ":50051"), - env.Fetch("ZED_TOKEN", "secret"), - ) + client := ioc.MustResolve[*authzed.Client](ioc.Default) defer client.Close() - err := authz.LoadSpiceSchema(ctx, client, "./etc/authzd/schema.zed") + + response, err := authz.WriteSchema(ctx, client, "./etc/authzd/schema.zed") if err != nil { pls.LogErrorNow(ctx, err) + os.Exit(1) } + pls.LogNow(ctx, log.Fields{"schema.write": response}) ctx = authz.Connection.With(ctx, connection) ctx = authz.Client.With(ctx, client) @@ -41,11 +69,12 @@ func main() { go func() { <-c server.GracefulStop() - logger.Log().Str("status", "goodbye").Send() + pls.LogNow(ctx, log.Fields{"status": "goodbye"}) }() defer server.GracefulStop() - logger.Log().Str("status", "ready").Send() + + pls.LogNow(ctx, log.Fields{"status": "read"}) socket := x.Must(net.Listen("tcp", ":10003")) pls.LogErrorNow(ctx, server.Serve(socket)) } -- cgit v1.2.3