mirror of https://github.com/ory/kratos
59 lines
1.9 KiB
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...))
|
|
}
|