[management] Let embedding binaries extend the command tree (#7483)

The management binary is embedded by downstream builds that override
server construction via SetNewServer, but the cobra command tree itself
was closed: rootCmd is unexported and fully assembled in init, with no
way to attach additional subcommands. Customize hands the built root
command to a caller-supplied function before Execute, so an embedding
binary can add its own commands next to — or under — the built-in ones,
such as extra administrative helpers beneath the existing admin group.
This commit is contained in:
Brad Ison
2026-09-09 15:36:37 +02:00
committed by GitHub
parent 269cbadfeb
commit 27991aab98
2 changed files with 51 additions and 0 deletions
+9
View File
@@ -54,6 +54,15 @@ func Execute() error {
return rootCmd.Execute()
}
// Customize hands the fully built root command to fn so an embedding binary
// can extend or adjust the command tree — most commonly attaching its own
// subcommands next to (or under) the built-in ones — before calling Execute.
// The root command is constructed in this package's init, so Customize may be
// called from the embedding binary's main at any point before Execute.
func Customize(fn func(root *cobra.Command)) {
fn(rootCmd)
}
func init() {
mgmtCmd.Flags().IntVar(&mgmtPort, "port", 80, "server port to listen on (defaults to 443 if TLS is enabled, 80 otherwise")
mgmtCmd.Flags().BoolVar(&disableLegacyManagementPort, "disable-legacy-port", false, "disabling the old legacy port (33073)")