databricks-cli/cmd/cmd.go

81 lines
1.8 KiB
Go

package cmd
import (
"context"
"strings"
"github.com/databricks/cli/cmd/account"
"github.com/databricks/cli/cmd/api"
"github.com/databricks/cli/cmd/auth"
"github.com/databricks/cli/cmd/bundle"
"github.com/databricks/cli/cmd/configure"
"github.com/databricks/cli/cmd/fs"
"github.com/databricks/cli/cmd/labs"
"github.com/databricks/cli/cmd/lsp"
"github.com/databricks/cli/cmd/root"
"github.com/databricks/cli/cmd/sync"
"github.com/databricks/cli/cmd/version"
"github.com/databricks/cli/cmd/workspace"
"github.com/spf13/cobra"
)
const (
mainGroup = "main"
permissionsGroup = "permissions"
)
func New(ctx context.Context) *cobra.Command {
cli := root.New(ctx)
// Add account subcommand.
cli.AddCommand(account.New())
// Add workspace subcommands.
for _, cmd := range workspace.All() {
// Built-in groups for the workspace commands.
groups := []cobra.Group{
{
ID: mainGroup,
Title: "Available Commands",
},
{
ID: permissionsGroup,
Title: "Permission Commands",
},
}
for i := range groups {
cmd.AddGroup(&groups[i])
}
// Order the permissions subcommands after the main commands.
for _, sub := range cmd.Commands() {
switch {
case strings.HasSuffix(sub.Name(), "-permissions"), strings.HasSuffix(sub.Name(), "-permission-levels"):
sub.GroupID = permissionsGroup
default:
sub.GroupID = mainGroup
}
}
cli.AddCommand(cmd)
}
// Add workspace command groups.
groups := workspace.Groups()
for i := range groups {
cli.AddGroup(&groups[i])
}
// Add other subcommands.
cli.AddCommand(api.New())
cli.AddCommand(auth.New())
cli.AddCommand(bundle.New())
cli.AddCommand(configure.New())
cli.AddCommand(fs.New())
cli.AddCommand(labs.New(ctx))
cli.AddCommand(sync.New())
cli.AddCommand(version.New())
cli.AddCommand(lsp.New())
return cli
}