kratos/cmd/serve/root.go

59 lines
1.9 KiB
Go

// Copyright © 2023 Ory Corp
// SPDX-License-Identifier: Apache-2.0
package serve
import (
"github.com/spf13/cobra"
"github.com/ory/kratos/cmd/daemon"
"github.com/ory/kratos/driver"
"github.com/ory/kratos/driver/config"
"github.com/ory/x/configx"
)
// NewServeCmd returns the serve command
func NewServeCmd(dOpts ...driver.RegistryOption) (serveCmd *cobra.Command) {
serveCmd = &cobra.Command{
Use: "serve",
Short: "Run the Ory Kratos server",
RunE: func(cmd *cobra.Command, args []string) error {
ctx := cmd.Context()
d, err := driver.New(ctx, cmd.ErrOrStderr(), append(dOpts, driver.WithConfigOptions(configx.WithFlags(cmd.Flags())))...)
if err != nil {
return err
}
if d.Config().IsInsecureDevMode(ctx) {
d.Logger().Warn(`
YOU ARE RUNNING Ory KRATOS IN DEV MODE.
SECURITY IS DISABLED.
DON'T DO THIS IN PRODUCTION!
`)
}
configVersion := d.Config().ConfigVersion(ctx)
if configVersion == config.UnknownVersion {
d.Logger().Warn("The config has no version specified. Add the version to improve your development experience.")
} else if config.Version != "" &&
configVersion != config.Version {
d.Logger().Warnf("Config version is '%s' but kratos runs on version '%s'", configVersion, config.Version)
}
return daemon.ServeAll(d)(cmd, args)
},
}
configx.RegisterFlags(serveCmd.PersistentFlags())
serveCmd.PersistentFlags().Bool("sqa-opt-out", false, "Disable anonymized telemetry reports - for more information please visit https://www.ory.sh/docs/ecosystem/sqa")
serveCmd.PersistentFlags().Bool("dev", false, "Disables critical security features to make development easier")
serveCmd.PersistentFlags().Bool("watch-courier", false, "Run the message courier as a background task, to simplify single-instance setup")
return serveCmd
}
func RegisterCommandRecursive(parent *cobra.Command, dOpts []driver.RegistryOption) {
parent.AddCommand(NewServeCmd(dOpts...))
}