mirror of
https://github.com/foomo/gotsrpc.git
synced 2025-10-16 12:35:35 +00:00
refactored gotsrpc.yaml => services in a target are a map now => we have default endpoints
This commit is contained in:
parent
a438c61de8
commit
0e5d2f1d23
1
build.go
1
build.go
@ -35,6 +35,7 @@ func Build(conf *config.Config, goPath string) {
|
||||
fmt.Fprintln(os.Stderr, " an error occured while trying to understand your code", err)
|
||||
os.Exit(2)
|
||||
}
|
||||
|
||||
ts, err := RenderTypeScriptServices(services, conf.Mappings, scalarTypes, target.TypeScriptModule)
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, " could not generate ts code", err)
|
||||
|
||||
@ -8,7 +8,7 @@ import (
|
||||
|
||||
type Target struct {
|
||||
Package string
|
||||
Services []string
|
||||
Services map[string]string
|
||||
TypeScriptModule string `yaml:"module"`
|
||||
Out string
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@ const sampleConf = `---
|
||||
targets:
|
||||
demo:
|
||||
services:
|
||||
- Service
|
||||
/service/demo: Service
|
||||
package: github.com/foomo/gotsrpc/demo
|
||||
module: My.Service
|
||||
out: /tmp/my-service.ts
|
||||
@ -56,7 +56,7 @@ func TestLoadConfig(t *testing.T) {
|
||||
if len(demoTarget.Services) != 1 {
|
||||
t.Fatal("wrong number of services")
|
||||
}
|
||||
if demoTarget.Services[0] != "Service" {
|
||||
t.Fatal("first serive is wrong")
|
||||
if demoTarget.Services["/service/demo"] != "Service" {
|
||||
t.Fatal("first service is wrong")
|
||||
}
|
||||
}
|
||||
|
||||
4
go.go
4
go.go
@ -105,7 +105,7 @@ func strfirst(str string, strfunc func(string) string) string {
|
||||
|
||||
}
|
||||
|
||||
func renderServiceProxies(services []*Service, fullPackageName string, packageName string, g *code) error {
|
||||
func renderServiceProxies(services map[string]*Service, fullPackageName string, packageName string, g *code) error {
|
||||
aliases := map[string]string{
|
||||
"net/http": "http",
|
||||
"time": "time",
|
||||
@ -290,7 +290,7 @@ func renderServiceProxies(services []*Service, fullPackageName string, packageNa
|
||||
return nil
|
||||
}
|
||||
|
||||
func RenderGo(services []*Service, longPackageName, packageName string) (gocode string, err error) {
|
||||
func RenderGo(services map[string]*Service, longPackageName, packageName string) (gocode string, err error) {
|
||||
g := newCode(" ")
|
||||
err = renderServiceProxies(services, longPackageName, packageName, g)
|
||||
if err != nil {
|
||||
|
||||
@ -11,7 +11,7 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
func readServiceFile(file *ast.File, packageName string, services []*Service) error {
|
||||
func readServiceFile(file *ast.File, packageName string, services map[string]*Service) error {
|
||||
findService := func(serviceName string) (service *Service, ok bool) {
|
||||
for _, service := range services {
|
||||
if service.Name == serviceName {
|
||||
@ -133,13 +133,13 @@ func readFields(fieldList *ast.FieldList, fileImports fileImportSpecMap) (fields
|
||||
|
||||
}
|
||||
|
||||
func readServicesInPackage(pkg *ast.Package, packageName string, serviceNames []string) (services []*Service, err error) {
|
||||
services = []*Service{}
|
||||
for _, serviceName := range serviceNames {
|
||||
services = append(services, &Service{
|
||||
func readServicesInPackage(pkg *ast.Package, packageName string, serviceMap map[string]string) (services map[string]*Service, err error) {
|
||||
services = map[string]*Service{}
|
||||
for endpoint, serviceName := range serviceMap {
|
||||
services[endpoint] = &Service{
|
||||
Name: serviceName,
|
||||
Methods: []*Method{},
|
||||
})
|
||||
}
|
||||
}
|
||||
for _, file := range pkg.Files {
|
||||
err = readServiceFile(file, packageName, services)
|
||||
@ -182,8 +182,8 @@ func loadConstants(pkg *ast.Package) map[string]*ast.BasicLit {
|
||||
|
||||
}
|
||||
|
||||
func Read(goPath string, packageName string, serviceNames []string) (services []*Service, structs map[string]*Struct, scalars map[string]*Scalar, constants map[string]map[string]*ast.BasicLit, err error) {
|
||||
if len(serviceNames) == 0 {
|
||||
func Read(goPath string, packageName string, serviceMap map[string]string) (services map[string]*Service, structs map[string]*Struct, scalars map[string]*Scalar, constants map[string]map[string]*ast.BasicLit, err error) {
|
||||
if len(serviceMap) == 0 {
|
||||
err = errors.New("nothing to do service names are empty")
|
||||
return
|
||||
}
|
||||
@ -191,8 +191,7 @@ func Read(goPath string, packageName string, serviceNames []string) (services []
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
services, err = readServicesInPackage(pkg, packageName, serviceNames)
|
||||
services, err = readServicesInPackage(pkg, packageName, serviceMap)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@ -98,11 +98,11 @@ func renderStruct(str *Struct, mappings config.TypeScriptMappings, scalarTypes m
|
||||
return nil
|
||||
}
|
||||
|
||||
func renderService(service *Service, mappings config.TypeScriptMappings, scalarTypes map[string]*Scalar, ts *code) error {
|
||||
func renderService(service *Service, endpoint string, mappings config.TypeScriptMappings, scalarTypes map[string]*Scalar, ts *code) error {
|
||||
clientName := service.Name + "Client"
|
||||
ts.l("export class " + clientName + " {").ind(1).
|
||||
l("static defaultInst = new " + clientName + ";").
|
||||
l("constructor(public endPoint:string = \"/service\", public transport = GoTSRPC.call) { }")
|
||||
l("constructor(public endPoint:string = \"" + endpoint + "\", public transport = GoTSRPC.call) { }")
|
||||
for _, method := range service.Methods {
|
||||
|
||||
ts.app(lcfirst(method.Name) + "(")
|
||||
@ -272,7 +272,7 @@ func ucFirst(str string) string {
|
||||
return constPrefix
|
||||
}
|
||||
|
||||
func RenderTypeScriptServices(services []*Service, mappings config.TypeScriptMappings, scalarTypes map[string]*Scalar, tsModuleName string) (typeScript string, err error) {
|
||||
func RenderTypeScriptServices(services map[string]*Service, mappings config.TypeScriptMappings, scalarTypes map[string]*Scalar, tsModuleName string) (typeScript string, err error) {
|
||||
ts := newCode(" ")
|
||||
if !SkipGoTSRPC {
|
||||
ts.l(`module GoTSRPC {
|
||||
@ -305,8 +305,8 @@ func RenderTypeScriptServices(services []*Service, mappings config.TypeScriptMap
|
||||
ts.l("module " + tsModuleName + " {")
|
||||
ts.ind(1)
|
||||
|
||||
for _, service := range services {
|
||||
err = renderService(service, mappings, scalarTypes, ts)
|
||||
for endPoint, service := range services {
|
||||
err = renderService(service, endPoint, mappings, scalarTypes, ts)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user