package root import ( "context" "strings" "github.com/databricks/databricks-sdk-go/useragent" "github.com/spf13/cobra" ) // commandSeparator joins command names in a command hierachy. // We enforce no command name contains this character. // See unit test [main.TestCommandsDontUseUnderscoreInName]. const commandSeparator = "_" // commandString walks up the command hierarchy of the specified // command to build a string representing this hierarchy. func commandString(cmd *cobra.Command) string { reversed := []string{cmd.Name()} cmd.VisitParents(func(p *cobra.Command) { if !p.HasParent() { return } reversed = append(reversed, p.Name()) }) ordered := make([]string, 0, len(reversed)) for i := len(reversed) - 1; i >= 0; i-- { ordered = append(ordered, reversed[i]) } return strings.Join(ordered, commandSeparator) } func withCommandInUserAgent(ctx context.Context, cmd *cobra.Command) context.Context { return useragent.InContext(ctx, "cmd", commandString(cmd)) }