mirror of
https://github.com/hanzo-fi/stack.git
synced 2026-10-30 20:34:43 +00:00
88 lines
2.7 KiB
Go
88 lines
2.7 KiB
Go
package cmd
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/formancehq/go-libs/aws/iam"
|
|
"github.com/formancehq/go-libs/bun/bunconnect"
|
|
"github.com/formancehq/go-libs/licence"
|
|
"github.com/formancehq/go-libs/publish"
|
|
|
|
"go.temporal.io/sdk/worker"
|
|
|
|
"github.com/formancehq/orchestration/internal/triggers"
|
|
|
|
sdk "github.com/formancehq/formance-sdk-go/v2"
|
|
"github.com/formancehq/go-libs/service"
|
|
"github.com/formancehq/orchestration/internal/temporalworker"
|
|
"github.com/spf13/cobra"
|
|
"go.uber.org/fx"
|
|
)
|
|
|
|
func stackClientModule(cmd *cobra.Command) fx.Option {
|
|
stackURL, _ := cmd.Flags().GetString(stackURLFlag)
|
|
|
|
return fx.Options(
|
|
fx.Provide(func(httpClient *http.Client) *sdk.Formance {
|
|
return sdk.New(
|
|
sdk.WithClient(httpClient),
|
|
sdk.WithServerURL(stackURL),
|
|
)
|
|
}),
|
|
)
|
|
}
|
|
|
|
func workerOptions(cmd *cobra.Command) fx.Option {
|
|
|
|
stack, _ := cmd.Flags().GetString(stackFlag)
|
|
temporalTaskQueue, _ := cmd.Flags().GetString(temporalTaskQueueFlag)
|
|
temporalMaxParallelActivities, _ := cmd.Flags().GetInt(temporalMaxParallelActivitiesFlag)
|
|
topics, _ := cmd.Flags().GetStringSlice(topicsFlag)
|
|
|
|
return fx.Options(
|
|
stackClientModule(cmd),
|
|
temporalworker.NewWorkerModule(temporalTaskQueue, worker.Options{
|
|
TaskQueueActivitiesPerSecond: float64(temporalMaxParallelActivities),
|
|
}),
|
|
triggers.NewListenerModule(
|
|
stack,
|
|
temporalTaskQueue,
|
|
topics,
|
|
),
|
|
)
|
|
}
|
|
|
|
func newWorkerCommand() *cobra.Command {
|
|
ret := &cobra.Command{
|
|
Use: "worker",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
commonOptions, err := commonOptions(cmd)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return service.New(cmd.OutOrStdout(), commonOptions, workerOptions(cmd)).Run(cmd)
|
|
},
|
|
}
|
|
ret.Flags().Float64(temporalMaxParallelActivitiesFlag, 10, "Maximum number of parallel activities")
|
|
ret.Flags().String(stackURLFlag, "", "Stack url")
|
|
ret.Flags().String(stackClientIDFlag, "", "Stack client ID")
|
|
ret.Flags().String(stackClientSecretFlag, "", "Stack client secret")
|
|
ret.Flags().String(temporalAddressFlag, "", "Temporal server address")
|
|
ret.Flags().String(temporalNamespaceFlag, "default", "Temporal namespace")
|
|
ret.Flags().String(temporalSSLClientKeyFlag, "", "Temporal client key")
|
|
ret.Flags().String(temporalSSLClientCertFlag, "", "Temporal client cert")
|
|
ret.Flags().String(temporalTaskQueueFlag, "default", "Temporal task queue name")
|
|
ret.Flags().Bool(temporalInitSearchAttributes, false, "Init temporal search attributes")
|
|
ret.Flags().StringSlice(topicsFlag, []string{}, "Topics to listen")
|
|
ret.Flags().String(stackFlag, "", "Stack")
|
|
|
|
publish.AddFlags(ServiceName, ret.Flags())
|
|
bunconnect.AddFlags(ret.Flags())
|
|
iam.AddFlags(ret.Flags())
|
|
service.AddFlags(ret.Flags())
|
|
licence.AddFlags(ret.Flags())
|
|
|
|
return ret
|
|
}
|