mirror of
https://github.com/hanzo-fi/stack.git
synced 2026-10-30 20:34:43 +00:00
104 lines
3.3 KiB
Go
104 lines
3.3 KiB
Go
package cmd
|
|
|
|
import (
|
|
"github.com/formancehq/stack/ee/stargate/internal/client"
|
|
"github.com/formancehq/stack/ee/stargate/internal/client/controllers"
|
|
"github.com/formancehq/stack/ee/stargate/internal/client/interceptors"
|
|
"github.com/formancehq/stack/libs/go-libs/licence"
|
|
"github.com/formancehq/stack/libs/go-libs/otlp/otlpmetrics"
|
|
"github.com/formancehq/stack/libs/go-libs/otlp/otlptraces"
|
|
app "github.com/formancehq/stack/libs/go-libs/service"
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/viper"
|
|
"go.uber.org/fx"
|
|
)
|
|
|
|
const (
|
|
serviceName = "stargate"
|
|
|
|
organizationIDFlag = "organization-id"
|
|
stackIDFlag = "stack-id"
|
|
|
|
bindFlag = "bind"
|
|
|
|
stargateServerURLFlag = "stargate-server-url"
|
|
gatewayURLFlag = "gateway-url"
|
|
|
|
workerPoolMaxWorkersFlag = "worker-pool-max-worker"
|
|
workerPoolMaxTasksFlag = "worker-pool-max-tasks"
|
|
|
|
ClientChanSizeFlag = "client-chan-size"
|
|
HTTPClientTimeoutFlag = "http-client-timeout"
|
|
HTTPClientMaxIdleConnsFlag = "http-client-max-idle-conns"
|
|
HTTPClientMaxIdleConnsPerHostFlag = "http-client-max-idle-conns-per-host"
|
|
|
|
AuthRefreshTokenDurationBeforeExpireTimeFlag = "auth-refresh-token-duration-before-expire-time"
|
|
StargateAuthClientIDFlag = "stargate-auth-client-id"
|
|
StargateAuthClientSecretFlag = "stargate-auth-client-secret"
|
|
StargateAuthIssuerURLFlag = "stargate-auth-issuer-url"
|
|
TlsEnabledFlag = "tls-enabled"
|
|
TlsInsecureSkipVerifyFlag = "tls-insecure-skip-verify"
|
|
TlsCACertificateFlag = "tls-ca-cert"
|
|
)
|
|
|
|
func newClient() *cobra.Command {
|
|
return &cobra.Command{
|
|
Use: "client",
|
|
Short: "Launch client",
|
|
SilenceUsage: true,
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
return app.New(cmd.OutOrStdout(), resolveClientOptions()...).Run(cmd.Context())
|
|
},
|
|
}
|
|
}
|
|
|
|
func resolveClientOptions() []fx.Option {
|
|
options := make([]fx.Option, 0)
|
|
options = append(options, fx.NopLogger)
|
|
|
|
options = append(options,
|
|
otlptraces.CLITracesModule(),
|
|
otlpmetrics.CLIMetricsModule(),
|
|
licence.CLIModule(serviceName),
|
|
|
|
fx.Provide(func() client.WorkerPoolConfig {
|
|
return client.NewWorkerPoolConfig(
|
|
viper.GetInt(workerPoolMaxWorkersFlag),
|
|
viper.GetInt(workerPoolMaxTasksFlag),
|
|
)
|
|
}),
|
|
fx.Provide(func() client.Config {
|
|
return client.NewClientConfig(
|
|
viper.GetString(organizationIDFlag),
|
|
viper.GetString(stackIDFlag),
|
|
viper.GetInt(ClientChanSizeFlag),
|
|
viper.GetString(gatewayURLFlag),
|
|
viper.GetDuration(HTTPClientTimeoutFlag),
|
|
viper.GetInt(HTTPClientMaxIdleConnsFlag),
|
|
viper.GetInt(HTTPClientMaxIdleConnsPerHostFlag),
|
|
)
|
|
}),
|
|
|
|
fx.Provide(func() interceptors.Config {
|
|
return interceptors.NewConfig(
|
|
viper.GetString(StargateAuthIssuerURLFlag),
|
|
viper.GetDuration(AuthRefreshTokenDurationBeforeExpireTimeFlag),
|
|
viper.GetString(StargateAuthClientIDFlag),
|
|
viper.GetString(StargateAuthClientSecretFlag),
|
|
)
|
|
}),
|
|
fx.Provide(func() controllers.StargateControllerConfig {
|
|
return controllers.NewStargateControllerConfig(Version)
|
|
}),
|
|
client.Module(
|
|
viper.GetString(bindFlag),
|
|
viper.GetString(stargateServerURLFlag),
|
|
viper.GetBool(TlsEnabledFlag),
|
|
viper.GetString(TlsCACertificateFlag),
|
|
viper.GetBool(TlsInsecureSkipVerifyFlag),
|
|
),
|
|
)
|
|
|
|
return options
|
|
}
|