verboseFlag:=cli.BoolFlag{Name:"verbose,vv",Usage:"turn on verbose mode",Destination:&globalArgs.Verbose}
idlFlag:=cli.StringSliceFlag{Name:"idl",Usage:"Specify the IDL file path. (.thrift or .proto)"}
moduleFlag:=cli.StringFlag{Name:"module",Aliases:[]string{"mod"},Usage:"Specify the Go module name.",Destination:&globalArgs.Gomod}
serviceNameFlag:=cli.StringFlag{Name:"service",Usage:"Specify the service name.",Destination:&globalArgs.ServiceName}
outDirFlag:=cli.StringFlag{Name:"out_dir",Usage:"Specify the project path.",Destination:&globalArgs.OutDir}
handlerDirFlag:=cli.StringFlag{Name:"handler_dir",Usage:"Specify the handler relative path (based on \"out_dir\").",Destination:&globalArgs.HandlerDir}
modelDirFlag:=cli.StringFlag{Name:"model_dir",Usage:"Specify the model relative path (based on \"out_dir\").",Destination:&globalArgs.ModelDir}
routerDirFlag:=cli.StringFlag{Name:"router_dir",Usage:"Specify the router relative path (based on \"out_dir\").",Destination:&globalArgs.RouterDir}
useFlag:=cli.StringFlag{Name:"use",Usage:"Specify the model package to import for handler.",Destination:&globalArgs.Use}
baseDomainFlag:=cli.StringFlag{Name:"base_domain",Usage:"Specify the request domain.",Destination:&globalArgs.BaseDomain}
clientDirFlag:=cli.StringFlag{Name:"client_dir",Usage:"Specify the client path. If not specified, IDL generated path is used for 'client' command; no client code is generated for 'new' command",Destination:&globalArgs.ClientDir}
forceClientDirFlag:=cli.StringFlag{Name:"force_client_dir",Usage:"Specify the client path, and won't use namespaces as subpaths",Destination:&globalArgs.ForceClientDir}
optPkgFlag:=cli.StringSliceFlag{Name:"option_package",Aliases:[]string{"P"},Usage:"Specify the package path. ({include_path}={import_path})"}
includesFlag:=cli.StringSliceFlag{Name:"proto_path",Aliases:[]string{"I"},Usage:"Add an IDL search path for includes. (Valid only if idl is protobuf)"}
excludeFilesFlag:=cli.StringSliceFlag{Name:"exclude_file",Aliases:[]string{"E"},Usage:"Specify the files that do not need to be updated."}
thriftOptionsFlag:=cli.StringSliceFlag{Name:"thriftgo",Aliases:[]string{"t"},Usage:"Specify arguments for the thriftgo. ({flag}={value})"}
protoOptionsFlag:=cli.StringSliceFlag{Name:"protoc",Aliases:[]string{"p"},Usage:"Specify arguments for the protoc. ({flag}={value})"}
thriftPluginsFlag:=cli.StringSliceFlag{Name:"thrift-plugins",Usage:"Specify plugins for the thriftgo. ({plugin_name}:{options})"}
protoPluginsFlag:=cli.StringSliceFlag{Name:"protoc-plugins",Usage:"Specify plugins for the protoc. ({plugin_name}:{options}:{out_dir})"}
noRecurseFlag:=cli.BoolFlag{Name:"no_recurse",Usage:"Generate master model only.",Destination:&globalArgs.NoRecurse}
forceNewFlag:=cli.BoolFlag{Name:"force",Aliases:[]string{"f"},Usage:"Force new a project, which will overwrite the generated files",Destination:&globalArgs.ForceNew}
enableExtendsFlag:=cli.BoolFlag{Name:"enable_extends",Usage:"Parse 'extends' for thrift IDL",Destination:&globalArgs.EnableExtends}
jsonEnumStrFlag:=cli.BoolFlag{Name:"json_enumstr",Usage:"Use string instead of num for json enums when idl is thrift.",Destination:&globalArgs.JSONEnumStr}
unsetOmitemptyFlag:=cli.BoolFlag{Name:"unset_omitempty",Usage:"Remove 'omitempty' tag for generated struct.",Destination:&globalArgs.UnsetOmitempty}
protoCamelJSONTag:=cli.BoolFlag{Name:"pb_camel_json_tag",Usage:"Convert Name style for json tag to camel(Only works protobuf).",Destination:&globalArgs.ProtobufCamelJSONTag}
snakeNameFlag:=cli.BoolFlag{Name:"snake_tag",Usage:"Use snake_case style naming for tags. (Only works for 'form', 'query', 'json')",Destination:&globalArgs.SnakeName}
rmTagFlag:=cli.StringSliceFlag{Name:"rm_tag",Usage:"Remove the default tag(json/query/form). If the annotation tag is set explicitly, it will not be removed."}
customLayout:=cli.StringFlag{Name:"customize_layout",Usage:"Specify the path for layout template.",Destination:&globalArgs.CustomizeLayout}
customLayoutData:=cli.StringFlag{Name:"customize_layout_data_path",Usage:"Specify the path for layout template render data.",Destination:&globalArgs.CustomizeLayoutData}
customPackage:=cli.StringFlag{Name:"customize_package",Usage:"Specify the path for package template.",Destination:&globalArgs.CustomizePackage}
handlerByMethod:=cli.BoolFlag{Name:"handler_by_method",Usage:"Generate a separate handler file for each method.",Destination:&globalArgs.HandlerByMethod}
// app
app:=cli.NewApp()
app.Name="hz"
app.Usage="A idl parser and code generator for Hertz projects"
app.Version=meta.Version
// The default separator for multiple parameters is modified to ";"