mirror of
https://github.com/hanzo-fi/payments.git
synced 2026-10-30 20:31:20 +00:00
89 lines
2.7 KiB
Go
89 lines
2.7 KiB
Go
package cmd
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
|
|
"github.com/bombsimon/logrusr/v3"
|
|
sharedapi "github.com/formancehq/go-libs/v3/api"
|
|
"github.com/formancehq/go-libs/v3/auth"
|
|
"github.com/formancehq/go-libs/v3/aws/iam"
|
|
"github.com/formancehq/go-libs/v3/bun/bunconnect"
|
|
"github.com/formancehq/go-libs/v3/health"
|
|
"github.com/formancehq/go-libs/v3/licence"
|
|
"github.com/formancehq/go-libs/v3/otlp"
|
|
"github.com/formancehq/go-libs/v3/otlp/otlpmetrics"
|
|
"github.com/formancehq/go-libs/v3/otlp/otlptraces"
|
|
"github.com/formancehq/go-libs/v3/profiling"
|
|
"github.com/formancehq/go-libs/v3/publish"
|
|
"github.com/formancehq/go-libs/v3/service"
|
|
"github.com/formancehq/go-libs/v3/temporal"
|
|
"github.com/formancehq/payments/internal/connectors/engine"
|
|
"github.com/formancehq/payments/internal/connectors/metrics"
|
|
"github.com/formancehq/payments/internal/storage"
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/spf13/cobra"
|
|
"go.opentelemetry.io/otel"
|
|
"go.uber.org/fx"
|
|
)
|
|
|
|
func setLogger() {
|
|
// Add a dedicated logger for opentelemetry in case of error
|
|
otel.SetLogger(logrusr.New(logrus.New().WithField("component", "otlp")))
|
|
}
|
|
|
|
func commonFlags(cmd *cobra.Command) {
|
|
cmd.Flags().String(StackFlag, "", "Stack name")
|
|
cmd.Flags().String(ListenFlag, ":8080", "Listen address")
|
|
service.AddFlags(cmd.Flags())
|
|
otlpmetrics.AddFlags(cmd.Flags())
|
|
otlptraces.AddFlags(cmd.Flags())
|
|
auth.AddFlags(cmd.Flags())
|
|
publish.AddFlags(ServiceName, cmd.Flags())
|
|
bunconnect.AddFlags(cmd.Flags())
|
|
iam.AddFlags(cmd.Flags())
|
|
profiling.AddFlags(cmd.Flags())
|
|
temporal.AddFlags(cmd.Flags())
|
|
licence.AddFlags(cmd.Flags())
|
|
}
|
|
|
|
func commonOptions(cmd *cobra.Command) (fx.Option, error) {
|
|
configEncryptionKey, _ := cmd.Flags().GetString(ConfigEncryptionKeyFlag)
|
|
if configEncryptionKey == "" {
|
|
return nil, errors.New("missing config encryption key")
|
|
}
|
|
|
|
connectionOptions, err := bunconnect.ConnectionOptionsFromFlags(cmd)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to get connection options: %w", err)
|
|
}
|
|
|
|
return fx.Options(
|
|
fx.Provide(func() *bunconnect.ConnectionOptions {
|
|
return connectionOptions
|
|
}),
|
|
otlp.FXModuleFromFlags(cmd),
|
|
otlptraces.FXModuleFromFlags(cmd),
|
|
otlpmetrics.FXModuleFromFlags(cmd),
|
|
fx.Provide(metrics.RegisterMetricsRegistry),
|
|
fx.Invoke(func(metrics.MetricsRegistry) {}),
|
|
temporal.FXModuleFromFlags(
|
|
cmd,
|
|
engine.Tracer,
|
|
temporal.SearchAttributes{
|
|
SearchAttributes: engine.SearchAttributes,
|
|
},
|
|
),
|
|
fx.Provide(func() sharedapi.ServiceInfo {
|
|
return sharedapi.ServiceInfo{
|
|
Version: Version,
|
|
}
|
|
}),
|
|
health.Module(),
|
|
publish.FXModuleFromFlags(cmd, service.IsDebug(cmd)),
|
|
licence.FXModuleFromFlags(cmd, ServiceName),
|
|
storage.Module(cmd, *connectionOptions, configEncryptionKey),
|
|
profiling.FXModuleFromFlags(cmd),
|
|
), nil
|
|
}
|