Documentation
¶
Overview ¶
Package generator .
Index ¶
- Constants
- func AddGlobalDependency(ref, path string) bool
- func AddGlobalMiddleware(mw Middleware)
- func HasFeature(list []feature, key string) bool
- func ImportPathTo(pkg string) string
- func RegisterFeature(key string)
- func SetKitexImportPath(path string)
- func SetTemplateExtension(name, text string)
- type APIExtension
- type Config
- type File
- type Generator
- type HandleFunc
- type MethodInfo
- type Middleware
- type PackageInfo
- type Parameter
- type PkgInfo
- type ServiceInfo
- type Task
- type TemplateExtension
Constants ¶
const ( KitexGenPath = "kitex_gen" DefaultCodec = "thrift" BuildFileName = "build.sh" BootstrapFileName = "bootstrap.sh" HandlerFileName = "handler.go" MainFileName = "main.go" ClientFileName = "client.go" ServerFileName = "server.go" InvokerFileName = "invoker.go" ServiceFileName = "*service.go" )
Constants .
Variables ¶
This section is empty.
Functions ¶
func AddGlobalDependency ¶
AddGlobalDependency adds dependency for all generators
func AddGlobalMiddleware ¶
func AddGlobalMiddleware(mw Middleware)
AddGlobalMiddleware adds middleware for all generators
func HasFeature ¶
HasFeature check whether a feature in the list
func ImportPathTo ¶
ImportPathTo returns an import path to the specified package under kitex.
func SetKitexImportPath ¶
func SetKitexImportPath(path string)
SetKitexImportPath sets the import path of kitex. Must be called before generating code.
Types ¶
type APIExtension ¶ added in v0.4.3
type APIExtension struct {
// ImportPaths contains a list of import path that the file should add to the import list.
// The paths must be registered with the TemplateExtension's Dependencies fields.
ImportPaths []string `json:"import_paths,omitempty"`
// Code snippets to be inserted in the NewX function before assembling options.
// It must be a template definition with a name identical to the one kitex uses.
ExtendOption string `json:"extend_option,omitempty"`
// Code snippets to be appended to the file.
// It must be a template definition with a name identical to the one kitex uses.
ExtendFile string `json:"extend_file,omitempty"`
}
APIExtension contains segments to extend an API template.
type Config ¶
type Config struct {
Verbose bool
GenerateMain bool // whether stuff in the main package should be generated
GenerateInvoker bool // generate main.go with invoker when main package generate
Version string
NoFastAPI bool
ModuleName string
ServiceName string
Use string
IDLType string
Includes util.StringSlice
ThriftOptions util.StringSlice
ProtobufOptions util.StringSlice
IDL string // the IDL file passed on the command line
OutputPath string // the output path for main pkg and kitex_gen
PackagePrefix string
CombineService bool // combine services to one service
CopyIDL bool
ThriftPlugins util.StringSlice
Features []feature
FrugalPretouch bool
ExtensionFile string
Record bool
RecordCmd []string
// contains filtered or unexported fields
}
Config .
func (*Config) AddFeature ¶
AddFeature add registered feature to config
func (*Config) ApplyExtension ¶ added in v0.4.3
ApplyExtension applies template extension.
type Generator ¶
type Generator interface {
GenerateService(pkg *PackageInfo) ([]*File, error)
GenerateMainPackage(pkg *PackageInfo) ([]*File, error)
}
Generator generates the codes of main package and scripts for building a server based on kitex.
func NewGenerator ¶
func NewGenerator(config *Config, middlewares []Middleware) Generator
NewGenerator .
type HandleFunc ¶
type HandleFunc func(*Task, *PackageInfo) (*File, error)
HandleFunc used generator
type MethodInfo ¶
type MethodInfo struct {
PkgInfo
ServiceName string
Name string
RawName string
Oneway bool
Void bool
Args []*Parameter
Resp *Parameter
Exceptions []*Parameter
ArgStructName string
ResStructName string
IsResponseNeedRedirect bool // int -> int*
GenArgResultStruct bool
ClientStreaming bool
ServerStreaming bool
}
MethodInfo .
type PackageInfo ¶
type PackageInfo struct {
Namespace string // a dot-separated string for generating service package under kitex_gen
Dependencies map[string]string // package name => import path, used for searching imports
*ServiceInfo // the target service
// the following fields will be filled and used by the generator
Codec string
NoFastAPI bool
Version string
RealServiceName string
Imports map[string]map[string]bool // import path => alias
ExternalKitexGen string
Features []feature
FrugalPretouch bool
}
PackageInfo contains information to generate a package for a service.
type ServiceInfo ¶
type ServiceInfo struct {
PkgInfo
ServiceName string
RawServiceName string
ServiceTypeName func() string
Base *ServiceInfo
Methods []*MethodInfo
CombineServices []*ServiceInfo
HasStreaming bool
}
ServiceInfo .
func (*ServiceInfo) AllMethods ¶
func (s *ServiceInfo) AllMethods() (ms []*MethodInfo)
AllMethods returns all methods that the service have.
type TemplateExtension ¶ added in v0.4.3
type TemplateExtension struct {
// FeatureNames registers some names to the scope for the code generating phrase, where templates can use the `HasFeature` function to query.
FeatureNames []string `json:"feature_names,omitempty"`
// EnableFeatures marks on which features that `HasFeature` queries should return true.
EnableFeatures []string `json:"enable_features,omitempty"`
// Dependencies is a mapping from import path to package names/aliases.
Dependencies map[string]string `json:"dependencies,omitempty"`
// Extension for client.go .
ExtendClient *APIExtension `json:"extend_client,omitempty"`
// Extension for server.go .
ExtendServer *APIExtension `json:"extend_server,omitempty"`
// Extension for invoker.go .
ExtendInvoker *APIExtension `json:"extend_invoker,omitempty"`
}
TemplateExtension extends templates that generates files in *service packages.
func (*TemplateExtension) FromJSONFile ¶ added in v0.4.3
func (p *TemplateExtension) FromJSONFile(filename string) error
FromJSONFile unmarshals a TemplateExtension with JSON format from the given file.
func (*TemplateExtension) ToJSONFile ¶ added in v0.4.3
func (p *TemplateExtension) ToJSONFile(filename string) error
ToJSONFile marshals a TemplateExtension to the given file in JSON format.