Skip to content

Commit 0e7eb87

Browse files
authored
Added an error when invalid subcommand is provided for CLI commands (#2655)
## Changes Added an error when invalid subcommand is provided for CLI commands ## Why Previously unknown subcommands of subcommands would be happily accepted due to the cobra behaviour https://github.com/spf13/cobra/blob/ceb39aba25c86233e4888210c4b57cdb0a78d1e1/args.go#L28 This PR makes sure that only valid subcommands are accepted ## Tests Added acceptance test <!-- If your PR needs to be included in the release notes for next release, add a separate entry in NEXT_CHANGELOG.md as part of your PR. -->
1 parent a05a2a7 commit 0e7eb87

File tree

145 files changed

+208
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

145 files changed

+208
-0
lines changed

.codegen/service.go.tmpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ func New() *cobra.Command {
7373
// This service is being previewed; hide from help output.
7474
Hidden: true,
7575
{{- end }}
76+
RunE: root.ReportUnknownSubcommand,
7677
}
7778

7879
{{ if gt (len .Methods) 0 -}}

NEXT_CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
2+
>>> errcode [CLI] secrets list-scopes
3+
Scope Backend Type
4+
5+
>>> errcode [CLI] secrets unknown
6+
Error: unknown command "unknown" for "databricks secrets"
7+
8+
Usage:
9+
databricks secrets [flags]
10+
databricks secrets [command]
11+
12+
Available Commands
13+
create-scope Create a new secret scope.
14+
delete-acl Delete an ACL.
15+
delete-scope Delete a secret scope.
16+
delete-secret Delete a secret.
17+
get-acl Get secret ACL details.
18+
get-secret Get a secret.
19+
list-acls Lists ACLs.
20+
list-scopes List all scopes.
21+
list-secrets List secret keys.
22+
put-acl Create/update an ACL.
23+
put-secret Add a secret.
24+
25+
Permission Commands
26+
27+
Flags:
28+
-h, --help help for secrets
29+
30+
Global Flags:
31+
--debug enable debug logging
32+
-o, --output type output type: text or json (default text)
33+
-p, --profile string ~/.databrickscfg profile
34+
-t, --target string bundle target to use (if applicable)
35+
36+
Use "databricks secrets [command] --help" for more information about a command.
37+
38+
39+
Exit code: 1
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
trace errcode $CLI secrets list-scopes
2+
trace errcode $CLI secrets unknown
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Local = true
2+
Cloud = false
3+
4+
[[Server]]
5+
Pattern = "GET /api/2.0/secrets/scopes/list"
6+
Response.Body = """
7+
{}
8+
"""

acceptance/help/output.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ Vector Search
9999
Dashboards
100100
genie Genie provides a no-code experience for business users, powered by AI/BI.
101101
lakeview These APIs provide specific management operations for Lakeview dashboards.
102+
lakeview-embedded Token-based Lakeview APIs for embedding dashboards in external applications.
102103

103104
Marketplace
104105
consumer-fulfillments Fulfillments are entities that allow consumers to preview installations.

cmd/account/access-control/access-control.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/billable-usage/billable-usage.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/budget-policy/budget-policy.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/budgets/budgets.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/credentials/credentials.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/csp-enablement-account/csp-enablement-account.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/custom-app-integration/custom-app-integration.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/disable-legacy-features/disable-legacy-features.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/enable-ip-access-lists/enable-ip-access-lists.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/encryption-keys/encryption-keys.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/esm-enablement-account/esm-enablement-account.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/federation-policy/federation-policy.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/groups/groups.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/ip-access-lists/ip-access-lists.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/log-delivery/log-delivery.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/metastore-assignments/metastore-assignments.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/metastores/metastores.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/network-connectivity/network-connectivity.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/networks/networks.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/o-auth-published-apps/o-auth-published-apps.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/personal-compute/personal-compute.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/private-access/private-access.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/published-app-integration/published-app-integration.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/service-principal-federation-policy/service-principal-federation-policy.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/service-principal-secrets/service-principal-secrets.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/service-principals/service-principals.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/settings/settings.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/storage-credentials/storage-credentials.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/storage/storage.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/usage-dashboards/usage-dashboards.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/users/users.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/vpc-endpoints/vpc-endpoints.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/workspace-assignment/workspace-assignment.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/account/workspaces/workspaces.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/root/root.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,3 +185,19 @@ Stack Trace:
185185

186186
return err
187187
}
188+
189+
// This function is used to report an unknown subcommand.
190+
// It is used in the [cobra.Command.RunE] field of commands that have subcommands.
191+
// If user provided a valid subcommand, RunE for the
192+
// If there are any arguments, it means the user has provided an unknown subcommand.
193+
// If there are no arguments, it means the user has not provided any subcommand, and the help
194+
// command should be displayed.
195+
func ReportUnknownSubcommand(cmd *cobra.Command, args []string) error {
196+
if len(args) > 0 {
197+
return &InvalidArgsError{
198+
Message: fmt.Sprintf("unknown command %q for %q", args[0], cmd.CommandPath()),
199+
Command: cmd,
200+
}
201+
}
202+
return cmd.Help()
203+
}

cmd/workspace/access-control/access-control.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/workspace/aibi-dashboard-embedding-access-policy/aibi-dashboard-embedding-access-policy.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/workspace/aibi-dashboard-embedding-approved-domains/aibi-dashboard-embedding-approved-domains.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)