2023-07-25 18:19:07 +00:00
|
|
|
package cmd
|
|
|
|
|
|
|
|
import (
|
2023-09-11 08:18:43 +00:00
|
|
|
"context"
|
2023-09-05 09:58:45 +00:00
|
|
|
"strings"
|
|
|
|
|
2023-07-25 18:19:07 +00:00
|
|
|
"github.com/databricks/cli/cmd/account"
|
2023-07-27 10:03:08 +00:00
|
|
|
"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"
|
2023-11-17 12:47:37 +00:00
|
|
|
"github.com/databricks/cli/cmd/labs"
|
2023-07-25 18:19:07 +00:00
|
|
|
"github.com/databricks/cli/cmd/root"
|
Recover from panic gracefully (#2353)
## Changes
This PR adds a recovery function for panics. This indicates to all users
running into a panic that it's a bug and they should report it to
Databricks.
## Tests
Manually and acceptance test.
Before:
```
.venv➜ cli git:(panic-r) ✗ ./cli selftest panic
panic: the databricks selftest panic command always panics
goroutine 1 [running]:
github.com/databricks/cli/cmd/selftest.New.newPanic.func1(0x1400016f208?, {0x1016ca925?, 0x4?, 0x1016ca929?})
/Users/shreyas.goenka/cli2/cli/cmd/selftest/panic.go:9 +0x2c
github.com/spf13/cobra.(*Command).execute(0x1400016f208, {0x10279bc40, 0x0, 0x0})
/Users/shreyas.goenka/cli2/cli/vendor/github.com/spf13/cobra/command.go:989 +0x81c
github.com/spf13/cobra.(*Command).ExecuteC(0x14000428908)
/Users/shreyas.goenka/cli2/cli/vendor/github.com/spf13/cobra/command.go:1117 +0x344
github.com/spf13/cobra.(*Command).ExecuteContextC(...)
/Users/shreyas.goenka/cli2/cli/vendor/github.com/spf13/cobra/command.go:1050
github.com/databricks/cli/cmd/root.Execute({0x101d60440?, 0x10279bc40?}, 0x10266dd78?)
/Users/shreyas.goenka/cli2/cli/cmd/root/root.go:101 +0x58
main.main()
/Users/shreyas.goenka/cli2/cli/main.go:13 +0x44
```
After:
```
.venv➜ cli git:(panic-r) ./cli selftest panic
The Databricks CLI unexpectedly had a fatal error.
Please report this issue to Databricks in the form of a GitHub issue at:
https://github.com/databricks/cli
CLI Version: 0.0.0-dev+aae7ced52d36
Panic Payload: the databricks selftest panic command always panics
Stack Trace:
goroutine 1 [running]:
runtime/debug.Stack()
/Users/shreyas.goenka/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.darwin-arm64/src/runtime/debug/stack.go:26 +0x64
github.com/databricks/cli/cmd/root.Execute.func1()
/Users/shreyas.goenka/cli2/cli/cmd/root/root.go:110 +0xa4
panic({0x10368b5e0?, 0x1039d6d70?})
/Users/shreyas.goenka/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.darwin-arm64/src/runtime/panic.go:785 +0x124
github.com/databricks/cli/cmd/selftest.New.newPanic.func1(0x14000145208?, {0x103356be5?, 0x4?, 0x103356be9?})
/Users/shreyas.goenka/cli2/cli/cmd/selftest/panic.go:9 +0x2c
github.com/spf13/cobra.(*Command).execute(0x14000145208, {0x104427c40, 0x0, 0x0})
/Users/shreyas.goenka/cli2/cli/vendor/github.com/spf13/cobra/command.go:989 +0x81c
github.com/spf13/cobra.(*Command).ExecuteC(0x14000400c08)
/Users/shreyas.goenka/cli2/cli/vendor/github.com/spf13/cobra/command.go:1117 +0x344
github.com/spf13/cobra.(*Command).ExecuteContextC(...)
/Users/shreyas.goenka/cli2/cli/vendor/github.com/spf13/cobra/command.go:1050
github.com/databricks/cli/cmd/root.Execute({0x1039ec440?, 0x104427c40?}, 0x14000400c08)
/Users/shreyas.goenka/cli2/cli/cmd/root/root.go:128 +0x94
main.main()
/Users/shreyas.goenka/cli2/cli/main.go:13 +0x44
```
2025-02-27 13:27:36 +00:00
|
|
|
"github.com/databricks/cli/cmd/selftest"
|
2023-07-27 10:03:08 +00:00
|
|
|
"github.com/databricks/cli/cmd/sync"
|
|
|
|
"github.com/databricks/cli/cmd/version"
|
2023-07-25 18:19:07 +00:00
|
|
|
"github.com/databricks/cli/cmd/workspace"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
)
|
|
|
|
|
2023-09-05 09:58:45 +00:00
|
|
|
const (
|
|
|
|
mainGroup = "main"
|
|
|
|
permissionsGroup = "permissions"
|
|
|
|
)
|
|
|
|
|
2023-09-11 08:18:43 +00:00
|
|
|
func New(ctx context.Context) *cobra.Command {
|
|
|
|
cli := root.New(ctx)
|
2023-07-27 10:03:08 +00:00
|
|
|
|
|
|
|
// Add account subcommand.
|
|
|
|
cli.AddCommand(account.New())
|
|
|
|
|
|
|
|
// Add workspace subcommands.
|
|
|
|
for _, cmd := range workspace.All() {
|
2023-09-05 09:58:45 +00:00
|
|
|
// 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
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-07-27 10:03:08 +00:00
|
|
|
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())
|
2023-11-17 12:47:37 +00:00
|
|
|
cli.AddCommand(labs.New(ctx))
|
2023-07-27 10:03:08 +00:00
|
|
|
cli.AddCommand(sync.New())
|
|
|
|
cli.AddCommand(version.New())
|
Recover from panic gracefully (#2353)
## Changes
This PR adds a recovery function for panics. This indicates to all users
running into a panic that it's a bug and they should report it to
Databricks.
## Tests
Manually and acceptance test.
Before:
```
.venv➜ cli git:(panic-r) ✗ ./cli selftest panic
panic: the databricks selftest panic command always panics
goroutine 1 [running]:
github.com/databricks/cli/cmd/selftest.New.newPanic.func1(0x1400016f208?, {0x1016ca925?, 0x4?, 0x1016ca929?})
/Users/shreyas.goenka/cli2/cli/cmd/selftest/panic.go:9 +0x2c
github.com/spf13/cobra.(*Command).execute(0x1400016f208, {0x10279bc40, 0x0, 0x0})
/Users/shreyas.goenka/cli2/cli/vendor/github.com/spf13/cobra/command.go:989 +0x81c
github.com/spf13/cobra.(*Command).ExecuteC(0x14000428908)
/Users/shreyas.goenka/cli2/cli/vendor/github.com/spf13/cobra/command.go:1117 +0x344
github.com/spf13/cobra.(*Command).ExecuteContextC(...)
/Users/shreyas.goenka/cli2/cli/vendor/github.com/spf13/cobra/command.go:1050
github.com/databricks/cli/cmd/root.Execute({0x101d60440?, 0x10279bc40?}, 0x10266dd78?)
/Users/shreyas.goenka/cli2/cli/cmd/root/root.go:101 +0x58
main.main()
/Users/shreyas.goenka/cli2/cli/main.go:13 +0x44
```
After:
```
.venv➜ cli git:(panic-r) ./cli selftest panic
The Databricks CLI unexpectedly had a fatal error.
Please report this issue to Databricks in the form of a GitHub issue at:
https://github.com/databricks/cli
CLI Version: 0.0.0-dev+aae7ced52d36
Panic Payload: the databricks selftest panic command always panics
Stack Trace:
goroutine 1 [running]:
runtime/debug.Stack()
/Users/shreyas.goenka/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.darwin-arm64/src/runtime/debug/stack.go:26 +0x64
github.com/databricks/cli/cmd/root.Execute.func1()
/Users/shreyas.goenka/cli2/cli/cmd/root/root.go:110 +0xa4
panic({0x10368b5e0?, 0x1039d6d70?})
/Users/shreyas.goenka/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.4.darwin-arm64/src/runtime/panic.go:785 +0x124
github.com/databricks/cli/cmd/selftest.New.newPanic.func1(0x14000145208?, {0x103356be5?, 0x4?, 0x103356be9?})
/Users/shreyas.goenka/cli2/cli/cmd/selftest/panic.go:9 +0x2c
github.com/spf13/cobra.(*Command).execute(0x14000145208, {0x104427c40, 0x0, 0x0})
/Users/shreyas.goenka/cli2/cli/vendor/github.com/spf13/cobra/command.go:989 +0x81c
github.com/spf13/cobra.(*Command).ExecuteC(0x14000400c08)
/Users/shreyas.goenka/cli2/cli/vendor/github.com/spf13/cobra/command.go:1117 +0x344
github.com/spf13/cobra.(*Command).ExecuteContextC(...)
/Users/shreyas.goenka/cli2/cli/vendor/github.com/spf13/cobra/command.go:1050
github.com/databricks/cli/cmd/root.Execute({0x1039ec440?, 0x104427c40?}, 0x14000400c08)
/Users/shreyas.goenka/cli2/cli/cmd/root/root.go:128 +0x94
main.main()
/Users/shreyas.goenka/cli2/cli/main.go:13 +0x44
```
2025-02-27 13:27:36 +00:00
|
|
|
cli.AddCommand(selftest.New())
|
2023-07-27 10:03:08 +00:00
|
|
|
|
|
|
|
return cli
|
2023-07-25 18:19:07 +00:00
|
|
|
}
|