Fix verbosity flag not show in usage (#1425)
This commit is contained in:
@@ -37,7 +37,7 @@ func App() *cobra.Command {
|
|||||||
Use: "fission",
|
Use: "fission",
|
||||||
Long: usage,
|
Long: usage,
|
||||||
//SilenceUsage: true,
|
//SilenceUsage: true,
|
||||||
PreRunE: wrapper.Wrapper(
|
PersistentPreRunE: wrapper.Wrapper(
|
||||||
func(input cli.Input) error {
|
func(input cli.Input) error {
|
||||||
console.Verbosity = input.Int(flagkey.Verbosity)
|
console.Verbosity = input.Int(flagkey.Verbosity)
|
||||||
return nil
|
return nil
|
||||||
@@ -53,7 +53,7 @@ func App() *cobra.Command {
|
|||||||
})
|
})
|
||||||
|
|
||||||
wrapper.SetFlags(rootCmd, flag.FlagSet{
|
wrapper.SetFlags(rootCmd, flag.FlagSet{
|
||||||
Optional: []flag.Flag{flag.GlobalServer, flag.GlobalVerbosity},
|
Global: []flag.Flag{flag.GlobalServer, flag.GlobalVerbosity},
|
||||||
})
|
})
|
||||||
|
|
||||||
groups := helptemplate.CommandGroups{}
|
groups := helptemplate.CommandGroups{}
|
||||||
@@ -64,7 +64,9 @@ func App() *cobra.Command {
|
|||||||
groups = append(groups, helptemplate.CreateCmdGroup("Other Commands", support.Commands(), version.Commands()))
|
groups = append(groups, helptemplate.CreateCmdGroup("Other Commands", support.Commands(), version.Commands()))
|
||||||
groups.Add(rootCmd)
|
groups.Add(rootCmd)
|
||||||
|
|
||||||
helptemplate.ActsAsRootCommand(rootCmd, nil, groups...)
|
flagExposer := helptemplate.ActsAsRootCommand(rootCmd, nil, groups...)
|
||||||
|
// show global options in usage
|
||||||
|
flagExposer.ExposeFlags(rootCmd, flagkey.Server, flagkey.Verbosity)
|
||||||
|
|
||||||
return rootCmd
|
return rootCmd
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,6 +53,14 @@ func Wrapper(action cmd.CommandAction) func(*cobra.Command, []string) error {
|
|||||||
func SetFlags(cmd *cobra.Command, flagSet flag.FlagSet) {
|
func SetFlags(cmd *cobra.Command, flagSet flag.FlagSet) {
|
||||||
aliases := make(map[string]string)
|
aliases := make(map[string]string)
|
||||||
|
|
||||||
|
// set global flags
|
||||||
|
for _, f := range flagSet.Global {
|
||||||
|
globalFlags(cmd, f)
|
||||||
|
for _, alias := range f.Aliases {
|
||||||
|
aliases[alias] = f.Name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// set required flags
|
// set required flags
|
||||||
for _, f := range flagSet.Required {
|
for _, f := range flagSet.Required {
|
||||||
requiredFlags(cmd, f)
|
requiredFlags(cmd, f)
|
||||||
@@ -84,7 +92,7 @@ func SetFlags(cmd *cobra.Command, flagSet flag.FlagSet) {
|
|||||||
|
|
||||||
func optionalFlags(cmd *cobra.Command, flags ...flag.Flag) {
|
func optionalFlags(cmd *cobra.Command, flags ...flag.Flag) {
|
||||||
for _, f := range flags {
|
for _, f := range flags {
|
||||||
toCobraFlag(cmd, f)
|
toCobraFlag(cmd, f, false)
|
||||||
if f.Deprecated {
|
if f.Deprecated {
|
||||||
usage := fmt.Sprintf("Use --%v instead. The flag still works for now and will be removed in future", f.Substitute)
|
usage := fmt.Sprintf("Use --%v instead. The flag still works for now and will be removed in future", f.Substitute)
|
||||||
cmd.Flags().MarkDeprecated(f.Name, usage)
|
cmd.Flags().MarkDeprecated(f.Name, usage)
|
||||||
@@ -96,12 +104,18 @@ func optionalFlags(cmd *cobra.Command, flags ...flag.Flag) {
|
|||||||
|
|
||||||
func requiredFlags(cmd *cobra.Command, flags ...flag.Flag) {
|
func requiredFlags(cmd *cobra.Command, flags ...flag.Flag) {
|
||||||
for _, f := range flags {
|
for _, f := range flags {
|
||||||
toCobraFlag(cmd, f)
|
toCobraFlag(cmd, f, false)
|
||||||
cmd.MarkFlagRequired(f.Name)
|
cmd.MarkFlagRequired(f.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func toCobraFlag(cmd *cobra.Command, f flag.Flag) {
|
func globalFlags(cmd *cobra.Command, flags ...flag.Flag) {
|
||||||
|
for _, f := range flags {
|
||||||
|
toCobraFlag(cmd, f, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func toCobraFlag(cmd *cobra.Command, f flag.Flag, global bool) {
|
||||||
// Workaround to pass aliases to templater for generating flag aliases.
|
// Workaround to pass aliases to templater for generating flag aliases.
|
||||||
if len(f.Aliases) > 0 {
|
if len(f.Aliases) > 0 {
|
||||||
var aliases []string
|
var aliases []string
|
||||||
@@ -119,67 +133,72 @@ func toCobraFlag(cmd *cobra.Command, f flag.Flag) {
|
|||||||
helptemplate.AliasSeparator, f.Usage)
|
helptemplate.AliasSeparator, f.Usage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
flagset := cmd.Flags()
|
||||||
|
if global {
|
||||||
|
flagset = cmd.PersistentFlags()
|
||||||
|
}
|
||||||
|
|
||||||
switch f.Type {
|
switch f.Type {
|
||||||
case flag.Bool:
|
case flag.Bool:
|
||||||
val, ok := f.DefaultValue.(bool)
|
val, ok := f.DefaultValue.(bool)
|
||||||
if !ok {
|
if !ok {
|
||||||
val = false
|
val = false
|
||||||
}
|
}
|
||||||
cmd.Flags().BoolP(f.Name, f.Short, val, f.Usage)
|
flagset.BoolP(f.Name, f.Short, val, f.Usage)
|
||||||
case flag.String:
|
case flag.String:
|
||||||
val, ok := f.DefaultValue.(string)
|
val, ok := f.DefaultValue.(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
val = ""
|
val = ""
|
||||||
}
|
}
|
||||||
cmd.Flags().StringP(f.Name, f.Short, val, f.Usage)
|
flagset.StringP(f.Name, f.Short, val, f.Usage)
|
||||||
case flag.StringSlice:
|
case flag.StringSlice:
|
||||||
val, ok := f.DefaultValue.([]string)
|
val, ok := f.DefaultValue.([]string)
|
||||||
if !ok {
|
if !ok {
|
||||||
val = []string{}
|
val = []string{}
|
||||||
}
|
}
|
||||||
cmd.Flags().StringArrayP(f.Name, f.Short, val, f.Usage)
|
flagset.StringArrayP(f.Name, f.Short, val, f.Usage)
|
||||||
case flag.Int:
|
case flag.Int:
|
||||||
val, ok := f.DefaultValue.(int)
|
val, ok := f.DefaultValue.(int)
|
||||||
if !ok {
|
if !ok {
|
||||||
val = 0
|
val = 0
|
||||||
}
|
}
|
||||||
cmd.Flags().IntP(f.Name, f.Short, val, f.Usage)
|
flagset.IntP(f.Name, f.Short, val, f.Usage)
|
||||||
case flag.IntSlice:
|
case flag.IntSlice:
|
||||||
val, ok := f.DefaultValue.([]int)
|
val, ok := f.DefaultValue.([]int)
|
||||||
if !ok {
|
if !ok {
|
||||||
val = []int{}
|
val = []int{}
|
||||||
}
|
}
|
||||||
cmd.Flags().IntSliceP(f.Name, f.Short, val, f.Usage)
|
flagset.IntSliceP(f.Name, f.Short, val, f.Usage)
|
||||||
case flag.Int64:
|
case flag.Int64:
|
||||||
val, ok := f.DefaultValue.(int64)
|
val, ok := f.DefaultValue.(int64)
|
||||||
if !ok {
|
if !ok {
|
||||||
val = 0
|
val = 0
|
||||||
}
|
}
|
||||||
cmd.Flags().Int64P(f.Name, f.Short, val, f.Usage)
|
flagset.Int64P(f.Name, f.Short, val, f.Usage)
|
||||||
case flag.Int64Slice:
|
case flag.Int64Slice:
|
||||||
val, ok := f.DefaultValue.([]int64)
|
val, ok := f.DefaultValue.([]int64)
|
||||||
if !ok {
|
if !ok {
|
||||||
val = []int64{}
|
val = []int64{}
|
||||||
}
|
}
|
||||||
cmd.Flags().Int64SliceP(f.Name, f.Short, val, f.Usage)
|
flagset.Int64SliceP(f.Name, f.Short, val, f.Usage)
|
||||||
case flag.Float32:
|
case flag.Float32:
|
||||||
val, ok := f.DefaultValue.(float32)
|
val, ok := f.DefaultValue.(float32)
|
||||||
if !ok {
|
if !ok {
|
||||||
val = 0
|
val = 0
|
||||||
}
|
}
|
||||||
cmd.Flags().Float32P(f.Name, f.Short, val, f.Usage)
|
flagset.Float32P(f.Name, f.Short, val, f.Usage)
|
||||||
case flag.Float64:
|
case flag.Float64:
|
||||||
val, ok := f.DefaultValue.(float64)
|
val, ok := f.DefaultValue.(float64)
|
||||||
if !ok {
|
if !ok {
|
||||||
val = 0
|
val = 0
|
||||||
}
|
}
|
||||||
cmd.Flags().Float64P(f.Name, f.Short, val, f.Usage)
|
flagset.Float64P(f.Name, f.Short, val, f.Usage)
|
||||||
case flag.Duration:
|
case flag.Duration:
|
||||||
val, ok := f.DefaultValue.(time.Duration)
|
val, ok := f.DefaultValue.(time.Duration)
|
||||||
if !ok {
|
if !ok {
|
||||||
val = 0
|
val = 0
|
||||||
}
|
}
|
||||||
cmd.Flags().DurationP(f.Name, f.Short, val, f.Usage)
|
flagset.DurationP(f.Name, f.Short, val, f.Usage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ const (
|
|||||||
{{end}}`
|
{{end}}`
|
||||||
|
|
||||||
// SectionFlags is the help template section that displays the command's flags.
|
// SectionFlags is the help template section that displays the command's flags.
|
||||||
SectionFlags = `{{ if or $visibleFlags.HasFlags $explicitlyExposedFlags.HasFlags}}Options:
|
SectionFlags = `{{ if or $visibleFlags.HasFlags $explicitlyExposedFlags.HasFlags}}Options
|
||||||
{{ if $visibleFlags.HasFlags}}{{trimRight (flagsUsages $visibleFlags)}}{{end}}{{ if $explicitlyExposedFlags.HasFlags}}{{ if $visibleFlags.HasFlags}}
|
{{ if $visibleFlags.HasFlags}}{{trimRight (flagsUsages $visibleFlags)}}{{end}}{{ if $explicitlyExposedFlags.HasFlags}}{{ if $visibleFlags.HasFlags}}
|
||||||
{{end}}{{trimRight (flagsUsages $explicitlyExposedFlags)}}{{end}}
|
{{end}}{{trimRight (flagsUsages $explicitlyExposedFlags)}}{{end}}
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import (
|
|||||||
"github.com/fission/fission/pkg/controller/client"
|
"github.com/fission/fission/pkg/controller/client"
|
||||||
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
||||||
"github.com/fission/fission/pkg/fission-cli/cmd/httptrigger"
|
"github.com/fission/fission/pkg/fission-cli/cmd/httptrigger"
|
||||||
|
"github.com/fission/fission/pkg/fission-cli/console"
|
||||||
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
||||||
"github.com/fission/fission/pkg/fission-cli/util"
|
"github.com/fission/fission/pkg/fission-cli/util"
|
||||||
)
|
)
|
||||||
@@ -65,6 +66,7 @@ func (opts *TestSubCommand) do(input cli.Input) error {
|
|||||||
}
|
}
|
||||||
routerURL = "127.0.0.1:" + localRouterPort
|
routerURL = "127.0.0.1:" + localRouterPort
|
||||||
} else {
|
} else {
|
||||||
|
console.Verbose(2, "Env FISSION_ROUTER: %v", routerURL)
|
||||||
routerURL = strings.TrimPrefix(routerURL, "http://")
|
routerURL = strings.TrimPrefix(routerURL, "http://")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,6 +79,9 @@ func (opts *TestSubCommand) do(input cli.Input) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.Verbose(2, "Function test url: %v", functionUrl.String())
|
||||||
|
|
||||||
queryParams := input.StringSlice(flagkey.FnTestQuery)
|
queryParams := input.StringSlice(flagkey.FnTestQuery)
|
||||||
if len(queryParams) > 0 {
|
if len(queryParams) > 0 {
|
||||||
query := url.Values{}
|
query := url.Values{}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ type (
|
|||||||
FlagType = int
|
FlagType = int
|
||||||
|
|
||||||
FlagSet struct {
|
FlagSet struct {
|
||||||
|
Global []Flag
|
||||||
Required []Flag
|
Required []Flag
|
||||||
Optional []Flag
|
Optional []Flag
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user