diff --git a/cmd/cmd.go b/cmd/cmd.go index 352c9f2..fe3758d 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -1,6 +1,7 @@ package cmd import ( + "fmt" "github.com/spf13/cobra" "log" "os" @@ -17,6 +18,11 @@ var rootCmd = &cobra.Command{ Short: "hertz框架脚手架", Long: `以golib.gaore.com/GaoreGo/hertz_demo为模板的脚手架`, Run: func(cmd *cobra.Command, args []string) { + if len(args) == 0 { + cmd.Help() + } else { + fmt.Println("Invalid command") + } }, } diff --git a/cmd/create.go b/cmd/create.go index d2763cc..10bdb49 100644 --- a/cmd/create.go +++ b/cmd/create.go @@ -18,6 +18,7 @@ var createCmd = &cobra.Command{ func init() { createCmd.Flags().StringVarP(&project, "project", "p", "", "项目名称") + createCmd.MarkFlagRequired("project") } func handleCreateCommand(args []string) { diff --git a/vendor/github.com/spf13/pflag/flag.go b/vendor/github.com/spf13/pflag/flag.go index e368aaf..24a5036 100644 --- a/vendor/github.com/spf13/pflag/flag.go +++ b/vendor/github.com/spf13/pflag/flag.go @@ -27,32 +27,23 @@ unaffected. Define flags using flag.String(), Bool(), Int(), etc. This declares an integer flag, -flagname, stored in the pointer ip, with type *int. - var ip = flag.Int("flagname", 1234, "help message for flagname") - If you like, you can bind the flag to a variable using the Var() functions. - var flagvar int func init() { flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname") } - Or you can create custom flags that satisfy the Value interface (with pointer receivers) and couple them to flag parsing by - flag.Var(&flagVal, "name", "help message for flagname") - For such flags, the default value is just the initial value of the variable. After all flags are defined, call - flag.Parse() - to parse the command line into the defined flags. Flags may then be used directly. If you're using the flags themselves, they are all pointers; if you bind to variables, they're values. - fmt.Println("ip has value ", *ip) fmt.Println("flagvar has value ", flagvar) @@ -63,26 +54,22 @@ The arguments are indexed from 0 through flag.NArg()-1. The pflag package also defines some new functions that are not in flag, that give one-letter shorthands for flags. You can use these by appending 'P' to the name of any function that defines a flag. - var ip = flag.IntP("flagname", "f", 1234, "help message") var flagvar bool func init() { flag.BoolVarP(&flagvar, "boolname", "b", true, "help message") } flag.VarP(&flagval, "varname", "v", "help message") - Shorthand letters can be used with single dashes on the command line. Boolean shorthand flags can be combined with other shorthand flags. Command line flag syntax: - --flag // boolean flags only --flag=x Unlike the flag package, a single dash before an option means something different than a double dash. Single dashes signify a series of shorthand letters for flags. All but the last shorthand letter must be boolean flags. - // boolean flags -f -abc @@ -940,9 +927,9 @@ func (f *FlagSet) usage() { } } -// --unknown (args will be empty) -// --unknown --next-flag ... (args will be --next-flag ...) -// --unknown arg ... (args will be arg ...) +//--unknown (args will be empty) +//--unknown --next-flag ... (args will be --next-flag ...) +//--unknown arg ... (args will be arg ...) func stripUnknownFlagValue(args []string) []string { if len(args) == 0 { //--unknown diff --git a/vendor/github.com/spf13/pflag/string_slice.go b/vendor/github.com/spf13/pflag/string_slice.go index d421887..3cb2e69 100644 --- a/vendor/github.com/spf13/pflag/string_slice.go +++ b/vendor/github.com/spf13/pflag/string_slice.go @@ -98,12 +98,9 @@ func (f *FlagSet) GetStringSlice(name string) ([]string, error) { // The argument p points to a []string variable in which to store the value of the flag. // Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly. // For example: -// -// --ss="v1,v2" --ss="v3" -// +// --ss="v1,v2" --ss="v3" // will result in -// -// []string{"v1", "v2", "v3"} +// []string{"v1", "v2", "v3"} func (f *FlagSet) StringSliceVar(p *[]string, name string, value []string, usage string) { f.VarP(newStringSliceValue(value, p), name, "", usage) } @@ -117,12 +114,9 @@ func (f *FlagSet) StringSliceVarP(p *[]string, name, shorthand string, value []s // The argument p points to a []string variable in which to store the value of the flag. // Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly. // For example: -// -// --ss="v1,v2" --ss="v3" -// +// --ss="v1,v2" --ss="v3" // will result in -// -// []string{"v1", "v2", "v3"} +// []string{"v1", "v2", "v3"} func StringSliceVar(p *[]string, name string, value []string, usage string) { CommandLine.VarP(newStringSliceValue(value, p), name, "", usage) } @@ -136,12 +130,9 @@ func StringSliceVarP(p *[]string, name, shorthand string, value []string, usage // The return value is the address of a []string variable that stores the value of the flag. // Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly. // For example: -// -// --ss="v1,v2" --ss="v3" -// +// --ss="v1,v2" --ss="v3" // will result in -// -// []string{"v1", "v2", "v3"} +// []string{"v1", "v2", "v3"} func (f *FlagSet) StringSlice(name string, value []string, usage string) *[]string { p := []string{} f.StringSliceVarP(&p, name, "", value, usage) @@ -159,12 +150,9 @@ func (f *FlagSet) StringSliceP(name, shorthand string, value []string, usage str // The return value is the address of a []string variable that stores the value of the flag. // Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly. // For example: -// -// --ss="v1,v2" --ss="v3" -// +// --ss="v1,v2" --ss="v3" // will result in -// -// []string{"v1", "v2", "v3"} +// []string{"v1", "v2", "v3"} func StringSlice(name string, value []string, usage string) *[]string { return CommandLine.StringSliceP(name, "", value, usage) }