Files
temporal/oci-image/main.go
2025-10-27 07:20:13 +00:00

65 lines
1.6 KiB
Go

package main
import (
log "log"
"os"
"go.temporal.io/server/common/authorization"
"go.temporal.io/server/common/config"
templog "go.temporal.io/server/common/log"
"go.temporal.io/server/temporal"
)
func main() {
configEnv := envOrDefault("TEMPORAL_CONFIG_ENV", "development")
configDir := envOrDefault("TEMPORAL_CONFIG_DIR", "./config")
cfg, err := config.LoadConfig(configEnv, configDir, "")
if err != nil {
log.Fatalf("load config: %v", err)
}
logger := templog.NewCLILogger()
authorizer, err := authorization.GetAuthorizerFromConfig(&cfg.Global.Authorization)
if err != nil {
log.Fatalf("authorizer: %v", err)
}
claimMapper, err := authorization.GetClaimMapperFromConfig(&cfg.Global.Authorization, logger)
if err != nil {
log.Fatalf("claim mapper: %v", err)
}
audienceMapper, err := authorization.GetAudienceMapperFromConfig(&cfg.Global.Authorization)
if err != nil {
log.Fatalf("audience mapper: %v", err)
}
srv, err := temporal.NewServer(
temporal.ForServices(temporal.DefaultServices),
temporal.WithConfig(cfg),
temporal.WithLogger(logger),
temporal.InterruptOn(temporal.InterruptCh()),
temporal.WithAuthorizer(authorizer),
temporal.WithClaimMapper(func(*config.Config) authorization.ClaimMapper { return claimMapper }),
temporal.WithAudienceGetter(func(*config.Config) authorization.JWTAudienceMapper { return audienceMapper }),
)
if err != nil {
log.Fatalf("setup server: %v", err)
}
defer srv.Stop()
if err := srv.Start(); err != nil {
log.Fatalf("start server: %v", err)
}
}
func envOrDefault(key, fallback string) string {
if value := os.Getenv(key); value != "" {
return value
}
return fallback
}