diff --git a/cmd/server/commands.go b/cmd/server/commands.go index d1a480d75..e0b713297 100644 --- a/cmd/server/commands.go +++ b/cmd/server/commands.go @@ -15,6 +15,7 @@ import ( "github.com/livekit/protocol/auth" "github.com/livekit/protocol/utils" + "github.com/livekit/livekit-server/pkg/config" "github.com/livekit/livekit-server/pkg/routing" "github.com/livekit/livekit-server/pkg/service" ) @@ -67,6 +68,16 @@ func printPorts(c *cli.Context) error { return nil } +func hiddenHelp(c *cli.Context) error { + generatedFlags, err := config.GenerateCLIFlags(baseFlags, false) + if err != nil { + return err + } + + c.App.Flags = append(baseFlags, generatedFlags...) + return cli.ShowAppHelp(c) +} + func createToken(c *cli.Context) error { room := c.String("room") identity := c.String("identity") diff --git a/cmd/server/main.go b/cmd/server/main.go index c7ccc53f2..606de2d30 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -102,7 +102,7 @@ func init() { } func main() { - generatedFlags, err := config.GenerateCLIFlags(baseFlags) + generatedFlags, err := config.GenerateCLIFlags(baseFlags, true) if err != nil { fmt.Println(err) } @@ -153,6 +153,11 @@ func main() { Usage: "list all nodes", Action: listNodes, }, + { + Name: "hidden-help", + Usage: "prints app help and includes all hidden generated configuration flags", + Action: hiddenHelp, + }, }, Version: version.Version, } diff --git a/pkg/config/config.go b/pkg/config/config.go index cf6663375..d7dd93d9d 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -24,8 +24,7 @@ var DefaultStunServers = []string{ type CongestionControlProbeMode string const ( - generatedCLIFlagsHidden = true - generatedCLIFlagUsage = "generated" + generatedCLIFlagUsage = "generated" CongestionControlProbeModePadding CongestionControlProbeMode = "padding" CongestionControlProbeModeMedia CongestionControlProbeMode = "media" @@ -398,7 +397,7 @@ func (conf *Config) ToCLIFlagNames(existingFlags []cli.Flag) map[string]reflect. return flagNames } -func GenerateCLIFlags(existingFlags []cli.Flag) ([]cli.Flag, error) { +func GenerateCLIFlags(existingFlags []cli.Flag, hidden bool) ([]cli.Flag, error) { blankConfig := &Config{} flags := []cli.Flag{} for name, value := range blankConfig.ToCLIFlagNames(existingFlags) { @@ -415,42 +414,42 @@ func GenerateCLIFlags(existingFlags []cli.Flag) ([]cli.Flag, error) { flag = &cli.BoolFlag{ Name: name, Usage: generatedCLIFlagUsage, - Hidden: generatedCLIFlagsHidden, + Hidden: hidden, } case reflect.String: flag = &cli.StringFlag{ Name: name, EnvVars: []string{envVar}, Usage: generatedCLIFlagUsage, - Hidden: generatedCLIFlagsHidden, + Hidden: hidden, } case reflect.Int, reflect.Int32: flag = &cli.IntFlag{ Name: name, EnvVars: []string{envVar}, Usage: generatedCLIFlagUsage, - Hidden: generatedCLIFlagsHidden, + Hidden: hidden, } case reflect.Int64: flag = &cli.Int64Flag{ Name: name, EnvVars: []string{envVar}, Usage: generatedCLIFlagUsage, - Hidden: generatedCLIFlagsHidden, + Hidden: hidden, } case reflect.Uint8, reflect.Uint16, reflect.Uint32: flag = &cli.UintFlag{ Name: name, EnvVars: []string{envVar}, Usage: generatedCLIFlagUsage, - Hidden: generatedCLIFlagsHidden, + Hidden: hidden, } case reflect.Float32: flag = &cli.Float64Flag{ Name: name, EnvVars: []string{envVar}, Usage: generatedCLIFlagUsage, - Hidden: generatedCLIFlagsHidden, + Hidden: hidden, } case reflect.Slice: // TODO diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index a77a276bf..dd1114354 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -34,7 +34,7 @@ room: } func TestGeneratedFlags(t *testing.T) { - generatedFlags, err := GenerateCLIFlags(nil) + generatedFlags, err := GenerateCLIFlags(nil, false) require.NoError(t, err) app := cli.NewApp()