cmd/root.go
// Copyright © 2022 Ory Corp
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"fmt"
"os"
"github.com/ory/x/cmdx"
"github.com/ory/hydra/v2/driver"
"github.com/ory/x/configx"
"github.com/ory/x/servicelocatorx"
"github.com/spf13/cobra"
)
func NewRootCmd(slOpts []servicelocatorx.Option, dOpts []driver.OptionsModifier, cOpts []configx.OptionModifier) *cobra.Command {
cmd := &cobra.Command{
Use: "hydra",
Short: "Run and manage Ory Hydra",
}
cmdx.EnableUsageTemplating(cmd)
RegisterCommandRecursive(cmd, slOpts, dOpts, cOpts)
return cmd
}
func RegisterCommandRecursive(parent *cobra.Command, slOpts []servicelocatorx.Option, dOpts []driver.OptionsModifier, cOpts []configx.OptionModifier) {
createCmd := NewCreateCmd()
createCmd.AddCommand(
NewCreateClientsCommand(),
NewCreateJWKSCmd(),
)
getCmd := NewGetCmd()
getCmd.AddCommand(
NewGetClientsCmd(),
NewGetJWKSCmd(),
)
deleteCmd := NewDeleteCmd()
deleteCmd.AddCommand(
NewDeleteClientCmd(),
NewDeleteJWKSCommand(),
NewDeleteAccessTokensCmd(),
)
listCmd := NewListCmd()
listCmd.AddCommand(NewListClientsCmd())
updateCmd := NewUpdateCmd()
updateCmd.AddCommand(NewUpdateClientCmd())
importCmd := NewImportCmd()
importCmd.AddCommand(
NewImportClientCmd(),
NewKeysImportCmd(),
)
performCmd := NewPerformCmd()
performCmd.AddCommand(
NewPerformClientCredentialsCmd(),
NewPerformAuthorizationCodeCmd(),
)
revokeCmd := NewRevokeCmd()
revokeCmd.AddCommand(NewRevokeTokenCmd())
introspectCmd := NewIntrospectCmd()
introspectCmd.AddCommand(NewIntrospectTokenCmd())
migrateCmd := NewMigrateCmd()
migrateCmd.AddCommand(NewMigrateGenCmd())
migrateCmd.AddCommand(NewMigrateSqlCmd(slOpts, dOpts, cOpts))
migrateCmd.AddCommand(NewMigrateStatusCmd(slOpts, dOpts, cOpts))
serveCmd := NewServeCmd()
serveCmd.AddCommand(NewServeAdminCmd(slOpts, dOpts, cOpts))
serveCmd.AddCommand(NewServePublicCmd(slOpts, dOpts, cOpts))
serveCmd.AddCommand(NewServeAllCmd(slOpts, dOpts, cOpts))
parent.AddCommand(
createCmd,
getCmd,
deleteCmd,
listCmd,
updateCmd,
importCmd,
performCmd,
introspectCmd,
revokeCmd,
migrateCmd,
serveCmd,
NewJanitorCmd(slOpts, dOpts, cOpts),
NewVersionCmd(),
)
}
// Execute adds all child commands to the root command sets flags appropriately.
func Execute() {
if err := NewRootCmd(nil, nil, nil).Execute(); err != nil {
fmt.Println(err)
os.Exit(-1)
}
}