Skip to content

Commit

Permalink
chore: improve option passing (#995)
Browse files Browse the repository at this point in the history
  • Loading branch information
zepatrik committed Aug 30, 2022
1 parent 6512489 commit 46d39c1
Show file tree
Hide file tree
Showing 11 changed files with 52 additions and 36 deletions.
2 changes: 1 addition & 1 deletion cmd/helpers/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (
)

func NewRegistry(cmd *cobra.Command, opts []ketoctx.Option) (driver.Registry, error) {
reg, err := driver.NewDefaultRegistry(cmd.Context(), cmd.Flags(), false, opts...)
reg, err := driver.NewDefaultRegistry(cmd.Context(), cmd.Flags(), false, opts)
if errors.Is(err, persistence.ErrNetworkMigrationsMissing) {
_, _ = fmt.Fprintf(cmd.ErrOrStderr(), "Migrations were not applied yet, please apply them first.")
return nil, cmdx.FailSilently(cmd)
Expand Down
2 changes: 1 addition & 1 deletion cmd/migrate/down.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func newDownCmd(opts []ketoctx.Option) *cobra.Command {
return fmt.Errorf("malformed argument %s for <steps>: %+v", args[0], err)
}

reg, err := driver.NewDefaultRegistry(cmd.Context(), cmd.Flags(), true, opts...)
reg, err := driver.NewDefaultRegistry(cmd.Context(), cmd.Flags(), true, opts)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/migrate/status.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func newStatusCmd(opts []ketoctx.Option) *cobra.Command {
RunE: func(cmd *cobra.Command, _ []string) error {
ctx := cmd.Context()

reg, err := driver.NewDefaultRegistry(ctx, cmd.Flags(), true, opts...)
reg, err := driver.NewDefaultRegistry(ctx, cmd.Flags(), true, opts)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/migrate/up.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Before running this command on an existing database, create a back up!
RunE: func(cmd *cobra.Command, _ []string) error {
ctx := cmd.Context()

reg, err := driver.NewDefaultRegistry(ctx, cmd.Flags(), true, opts...)
reg, err := driver.NewDefaultRegistry(ctx, cmd.Flags(), true, opts)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/serve_debug_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ dsn: memory`)
configx.RegisterFlags(flags)
require.NoError(b, flags.Set(configx.FlagConfig, f.Name()))

reg, err := driver.NewDefaultRegistry(rCtx, flags, false)
reg, err := driver.NewDefaultRegistry(rCtx, flags, false, nil)

// setting env vars instead of flags bc flags are not defined on every command
require.NoError(b, os.Setenv(client.EnvReadRemote, "127.0.0.1:4466"))
Expand Down
18 changes: 9 additions & 9 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ require (
github.com/ory/herodot v0.9.13
github.com/ory/jsonschema/v3 v3.0.7
github.com/ory/keto/proto v0.8.0-alpha.2
github.com/ory/x v0.0.451
github.com/ory/x v0.0.461
github.com/pelletier/go-toml v1.9.5
github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5
github.com/pkg/errors v0.9.1
Expand All @@ -44,7 +44,7 @@ require (
github.com/tidwall/sjson v1.2.4
github.com/urfave/negroni v1.0.0
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0
go.opentelemetry.io/otel v1.8.0
go.opentelemetry.io/otel v1.9.0
go.uber.org/goleak v1.1.12
golang.org/x/exp v0.0.0-20220518171630-0b5c67f07fdf
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f
Expand Down Expand Up @@ -183,14 +183,14 @@ require (
go.opentelemetry.io/contrib/propagators/b3 v1.7.0 // indirect
go.opentelemetry.io/contrib/propagators/jaeger v1.7.0 // indirect
go.opentelemetry.io/contrib/samplers/jaegerremote v0.2.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.7.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0 // indirect
go.opentelemetry.io/otel/exporters/zipkin v1.7.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.9.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.9.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.9.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.9.0 // indirect
go.opentelemetry.io/otel/exporters/zipkin v1.9.0 // indirect
go.opentelemetry.io/otel/metric v0.30.0 // indirect
go.opentelemetry.io/otel/sdk v1.7.0 // indirect
go.opentelemetry.io/otel/trace v1.8.0 // indirect
go.opentelemetry.io/otel/sdk v1.9.0 // indirect
go.opentelemetry.io/otel/trace v1.9.0 // indirect
go.opentelemetry.io/proto/otlp v0.18.0 // indirect
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
Expand Down
37 changes: 18 additions & 19 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -747,8 +747,8 @@ github.com/ory/jsonschema/v3 v3.0.7 h1:GQ9qfZDiJqs4l2d3p56dozCChvejQFZyLKGHYzDzO
github.com/ory/jsonschema/v3 v3.0.7/go.mod h1:g8c8YOtN4TrR2wYeMdT02GDmzJDI0fEW2nI26BECafY=
github.com/ory/viper v1.7.5 h1:+xVdq7SU3e1vNaCsk/ixsfxE4zylk1TJUiJrY647jUE=
github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM=
github.com/ory/x v0.0.451 h1:p3EsFCFLwwoGPLBsjiuJvqVWWmvqQ2IQSGFgyedidCQ=
github.com/ory/x v0.0.451/go.mod h1:kB0Nf6sgWsDl7M0QjDmfyKheDc/LF999wzhKHQ2Kop0=
github.com/ory/x v0.0.461 h1:bLnOgv/rIXYfjed2cAI0pO0MithE121cINARiIuv48I=
github.com/ory/x v0.0.461/go.mod h1:w2gwqgw3XqKTxW8wURVxUFI2NuDyIC2rGxvEsnBJqjs=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
Expand Down Expand Up @@ -979,27 +979,27 @@ go.opentelemetry.io/contrib/propagators/jaeger v1.7.0/go.mod h1:kt2lNImfxV6dETRs
go.opentelemetry.io/contrib/samplers/jaegerremote v0.2.0 h1:cCx0XYB81bbpBYun60UcEblI8r0ias16lN2lfNxM4Zc=
go.opentelemetry.io/contrib/samplers/jaegerremote v0.2.0/go.mod h1:msYRukz0g638uAB+ZPcloG2G/ffP0mKQLFtA7Dv7abA=
go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk=
go.opentelemetry.io/otel v1.8.0 h1:zcvBFizPbpa1q7FehvFiHbQwGzmPILebO0tyqIR5Djg=
go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM=
go.opentelemetry.io/otel/exporters/jaeger v1.7.0 h1:wXgjiRldljksZkZrldGVe6XrG9u3kYDyQmkZwmm5dI0=
go.opentelemetry.io/otel/exporters/jaeger v1.7.0/go.mod h1:PwQAOqBgqbLQRKlj466DuD2qyMjbtcPpfPfj+AqbSBs=
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0 h1:7Yxsak1q4XrJ5y7XBnNwqWx9amMZvoidCctv62XOQ6Y=
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0/go.mod h1:M1hVZHNxcbkAlcvrOMlpQ4YOO3Awf+4N2dxkZL3xm04=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0 h1:cMDtmgJ5FpRvqx9x2Aq+Mm0O6K/zcUkH73SFz20TuBw=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0/go.mod h1:ceUgdyfNv4h4gLxHR0WNfDiiVmZFodZhZSbOLhpxqXE=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0 h1:pLP0MH4MAqeTEV0g/4flxw9O8Is48uAIauAnjznbW50=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0/go.mod h1:aFXT9Ng2seM9eizF+LfKiyPBGy8xIZKwhusC1gIu3hA=
go.opentelemetry.io/otel/exporters/zipkin v1.7.0 h1:X0FZj+kaIdLi29UiyrEGDhRTYsEXj9GdEW5Y39UQFEE=
go.opentelemetry.io/otel/exporters/zipkin v1.7.0/go.mod h1:9YBXeOMFLQGwNEjsxMRiWPGoJX83usGMhbCmxUbNe5I=
go.opentelemetry.io/otel v1.9.0 h1:8WZNQFIB2a71LnANS9JeyidJKKGOOremcUtb/OtHISw=
go.opentelemetry.io/otel v1.9.0/go.mod h1:np4EoPGzoPs3O67xUVNoPPcmSvsfOxNlNA4F4AC+0Eo=
go.opentelemetry.io/otel/exporters/jaeger v1.9.0 h1:gAEgEVGDWwFjcis9jJTOJqZNxDzoZfR12WNIxr7g9Ww=
go.opentelemetry.io/otel/exporters/jaeger v1.9.0/go.mod h1:hquezOLVAybNW6vanIxkdLXTXvzlj2Vn3wevSP15RYs=
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.9.0 h1:ggqApEjDKczicksfvZUCxuvoyDmR6Sbm56LwiK8DVR0=
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.9.0/go.mod h1:78XhIg8Ht9vR4tbLNUhXsiOnE2HOuSeKAiAcoVQEpOY=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.9.0 h1:NN90Cuna0CnBg8YNu1Q0V35i2E8LDByFOwHRCq/ZP9I=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.9.0/go.mod h1:0EsCXjZAiiZGnLdEUXM9YjCKuuLZMYyglh2QDXcYKVA=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.9.0 h1:FAF9l8Wjxi9Ad2k/vLTfHZyzXYX72C62wBGpV3G6AIo=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.9.0/go.mod h1:smUdtylgc0YQiUr2PuifS4hBXhAS5xtR6WQhxP1wiNA=
go.opentelemetry.io/otel/exporters/zipkin v1.9.0 h1:06b/nt6xao6th00aue9WU3ZDTTe+InaMXA/vym6pLuA=
go.opentelemetry.io/otel/exporters/zipkin v1.9.0/go.mod h1:HyIvYIu37wV4Wx5azd7e05x9k/dOz9KB4x0plw2QNvs=
go.opentelemetry.io/otel/metric v0.30.0 h1:Hs8eQZ8aQgs0U49diZoaS6Uaxw3+bBE3lcMUKBFIk3c=
go.opentelemetry.io/otel/metric v0.30.0/go.mod h1:/ShZ7+TS4dHzDFmfi1kSXMhMVubNoP0oIaBp70J6UXU=
go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1B0=
go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU=
go.opentelemetry.io/otel/sdk v1.9.0 h1:LNXp1vrr83fNXTHgU8eO89mhzxb/bbWAsHG6fNf3qWo=
go.opentelemetry.io/otel/sdk v1.9.0/go.mod h1:AEZc8nt5bd2F7BC24J5R0mrjYnpEgYHyTcM/vrSple4=
go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU=
go.opentelemetry.io/otel/trace v1.8.0 h1:cSy0DF9eGI5WIfNwZ1q2iUyGj00tGzP24dE1lOlHrfY=
go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4=
go.opentelemetry.io/otel/trace v1.9.0 h1:oZaCNJUjWcg60VXWee8lJKlqhPbXAPB51URuR47pQYc=
go.opentelemetry.io/otel/trace v1.9.0/go.mod h1:2737Q0MuG8q1uILYm2YYVkAyLtOofiTNGg6VODnOiPo=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
go.opentelemetry.io/proto/otlp v0.18.0 h1:W5hyXNComRa23tGpKwG+FRAc4rfF6ZUg1JReK+QHS80=
go.opentelemetry.io/proto/otlp v0.18.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
Expand Down Expand Up @@ -1528,7 +1528,6 @@ google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzI
google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ=
google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.48.0 h1:rQOsyJ/8+ufEDJd/Gdsz7HG220Mh9HAhFHRGnIjda0w=
google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
Expand Down
6 changes: 5 additions & 1 deletion internal/driver/registry_default.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ type (
defaultUnaryInterceptors []grpc.UnaryServerInterceptor
defaultStreamInterceptors []grpc.StreamServerInterceptor
defaultHttpMiddlewares []func(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc)
defaultMigrationOptions []popx.MigrationBoxOption
}
Handler interface {
RegisterReadRoutes(r *x.ReadRouter)
Expand Down Expand Up @@ -205,7 +206,10 @@ func (r *RegistryDefault) MigrationBox(ctx context.Context) (*popx.MigrationBox,
mb, err := popx.NewMigrationBox(
fsx.Merge(sql.Migrations, networkx.Migrations),
popx.NewMigrator(c, r.Logger(), r.Tracer(ctx), 0),
popx.WithGoMigrations(uuidmapping.Migrations(namespaces)),
append(
[]popx.MigrationBoxOption{popx.WithGoMigrations(uuidmapping.Migrations(namespaces))},
r.defaultMigrationOptions...,
)...,
)
if err != nil {
return nil, err
Expand Down
3 changes: 2 additions & 1 deletion internal/driver/registry_factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import (
"github.com/ory/keto/internal/driver/config"
)

func NewDefaultRegistry(ctx context.Context, flags *pflag.FlagSet, withoutNetwork bool, opts ...ketoctx.Option) (Registry, error) {
func NewDefaultRegistry(ctx context.Context, flags *pflag.FlagSet, withoutNetwork bool, opts []ketoctx.Option) (Registry, error) {
reg, ok := ctx.Value(RegistryContextKey).(Registry)
if ok {
return reg, nil
Expand All @@ -49,6 +49,7 @@ func NewDefaultRegistry(ctx context.Context, flags *pflag.FlagSet, withoutNetwor
defaultUnaryInterceptors: options.GRPCUnaryInterceptors(),
defaultStreamInterceptors: options.GRPCStreamInterceptors(),
defaultHttpMiddlewares: options.HTTPMiddlewares(),
defaultMigrationOptions: options.MigrationOptions(),
}

init := r.Init
Expand Down
2 changes: 1 addition & 1 deletion internal/e2e/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ func newInitializedReg(t testing.TB, dsn *dbx.DsnT, cfgOverwrites map[string]int
cf := dbx.ConfigFile(t, cfgValues)
require.NoError(t, flags.Parse([]string{"--" + configx.FlagConfig, cf}))

reg, err := driver.NewDefaultRegistry(ctx, flags, true)
reg, err := driver.NewDefaultRegistry(ctx, flags, true, nil)
require.NoError(t, err)

require.NoError(t, reg.MigrateUp(ctx))
Expand Down
12 changes: 12 additions & 0 deletions ketoctx/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"net/http"

"github.com/ory/x/logrusx"
"github.com/ory/x/popx"
"google.golang.org/grpc"
)

Expand All @@ -14,6 +15,7 @@ type (
httpMiddlewares []func(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc)
grpcUnaryInterceptors []grpc.UnaryServerInterceptor
grpcStreamInterceptors []grpc.StreamServerInterceptor
migrationOpts []popx.MigrationBoxOption
}
Option func(o *opts)
)
Expand Down Expand Up @@ -48,6 +50,12 @@ func WithGRPCStreamInterceptors(i ...grpc.StreamServerInterceptor) Option {
}
}

func WithMigrationOptions(o ...popx.MigrationBoxOption) Option {
return func(opts *opts) {
opts.migrationOpts = o
}
}

func (o *opts) Logger() *logrusx.Logger {
return o.logger
}
Expand All @@ -68,6 +76,10 @@ func (o *opts) GRPCStreamInterceptors() []grpc.StreamServerInterceptor {
return o.grpcStreamInterceptors
}

func (o *opts) MigrationOptions() []popx.MigrationBoxOption {
return o.migrationOpts
}

func Options(options ...Option) *opts {
o := &opts{
contextualizer: &DefaultContextualizer{},
Expand Down

0 comments on commit 46d39c1

Please sign in to comment.