in codegen/module_system.go [279:411]
func NewDefaultModuleSystem(
h *PackageHelper,
selectiveBuilding bool,
hooks ...PostGenHook,
) (*ModuleSystem, error) {
system := NewModuleSystem(h.moduleSearchPaths, h.defaultDependencies, selectiveBuilding, hooks...)
tmpl, err := NewDefaultTemplate()
if err != nil {
return nil, err
}
// Register client module class and type generators
if err := system.RegisterClass(ModuleClass{
Name: "client",
NamePlural: "clients",
ClassType: MultiModule,
}); err != nil {
return nil, errors.Wrapf(err, "Error registering client class")
}
if err := system.RegisterClassType("client", "http", newHTTPClientGenerator(tmpl, h)); err != nil {
return nil, errors.Wrapf(
err,
"Error registering HTTP client class type",
)
}
if err := system.RegisterClassType("client", "tchannel", newTChannelClientGenerator(tmpl, h)); err != nil {
return nil, errors.Wrapf(
err,
"Error registering TChannel client class type",
)
}
if err := system.RegisterClassType("client", "custom", newCustomClientGenerator(tmpl, h)); err != nil {
return nil, errors.Wrapf(
err,
"Error registering custom client class type",
)
}
if err := system.RegisterClassType("client", "grpc", newGRPCClientGenerator(tmpl, h)); err != nil {
return nil, errors.Wrapf(
err,
"Error registering grpc client class type",
)
}
if err := system.RegisterClass(ModuleClass{
Name: "middleware",
NamePlural: "middlewares",
ClassType: MultiModule,
DependsOn: []string{"client"},
}); err != nil {
return nil, errors.Wrapf(
err,
"Error registering middleware class",
)
}
if err := system.RegisterClassType("middleware", "http", &MiddlewareGenerator{
templates: tmpl,
packageHelper: h,
}); err != nil {
return nil, errors.Wrapf(
err,
"Error registering Gateway middleware class type",
)
}
if err := system.RegisterClassType("middleware", "tchannel", &MiddlewareGenerator{
templates: tmpl,
packageHelper: h,
}); err != nil {
return nil, errors.Wrapf(
err,
"Error registering Gateway middleware class type",
)
}
// Register endpoint module class and type generators
if err := system.RegisterClass(ModuleClass{
Name: "endpoint",
NamePlural: "endpoints",
ClassType: MultiModule,
DependsOn: []string{"client", "middleware"},
}); err != nil {
return nil, errors.Wrapf(err, "Error registering endpoint class")
}
if err := system.RegisterClassType("endpoint", "http", &EndpointGenerator{
templates: tmpl,
packageHelper: h,
}); err != nil {
return nil, errors.Wrapf(
err,
"Error registering HTTP endpoint class type",
)
}
if err := system.RegisterClassType("endpoint", "tchannel", &EndpointGenerator{
templates: tmpl,
packageHelper: h,
}); err != nil {
return nil, errors.Wrapf(
err,
"Error registering TChannel endpoint class type",
)
}
if err := system.RegisterClass(ModuleClass{
Name: "service",
NamePlural: "services",
ClassType: MultiModule,
DependsOn: []string{"endpoint"},
}); err != nil {
return nil, errors.Wrapf(
err,
"Error registering service class",
)
}
if err := system.RegisterClassType("service", "gateway",
NewGatewayServiceGenerator(tmpl, h)); err != nil {
return nil, errors.Wrapf(
err,
"Error registering Gateway service class type",
)
}
return system, nil
}