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)
|
fmt.Fprintln(os.Stderr, " an error occured while trying to understand your code", err)
|
||||||
os.Exit(2)
|
os.Exit(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
ts, err := RenderTypeScriptServices(services, conf.Mappings, scalarTypes, target.TypeScriptModule)
|
ts, err := RenderTypeScriptServices(services, conf.Mappings, scalarTypes, target.TypeScriptModule)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintln(os.Stderr, " could not generate ts code", err)
|
fmt.Fprintln(os.Stderr, " could not generate ts code", err)
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import (
|
|||||||
|
|
||||||
type Target struct {
|
type Target struct {
|
||||||
Package string
|
Package string
|
||||||
Services []string
|
Services map[string]string
|
||||||
TypeScriptModule string `yaml:"module"`
|
TypeScriptModule string `yaml:"module"`
|
||||||
Out string
|
Out string
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@ const sampleConf = `---
|
|||||||
targets:
|
targets:
|
||||||
demo:
|
demo:
|
||||||
services:
|
services:
|
||||||
- Service
|
/service/demo: Service
|
||||||
package: github.com/foomo/gotsrpc/demo
|
package: github.com/foomo/gotsrpc/demo
|
||||||
module: My.Service
|
module: My.Service
|
||||||
out: /tmp/my-service.ts
|
out: /tmp/my-service.ts
|
||||||
@ -56,7 +56,7 @@ func TestLoadConfig(t *testing.T) {
|
|||||||
if len(demoTarget.Services) != 1 {
|
if len(demoTarget.Services) != 1 {
|
||||||
t.Fatal("wrong number of services")
|
t.Fatal("wrong number of services")
|
||||||
}
|
}
|
||||||
if demoTarget.Services[0] != "Service" {
|
if demoTarget.Services["/service/demo"] != "Service" {
|
||||||
t.Fatal("first serive is wrong")
|
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{
|
aliases := map[string]string{
|
||||||
"net/http": "http",
|
"net/http": "http",
|
||||||
"time": "time",
|
"time": "time",
|
||||||
@ -290,7 +290,7 @@ func renderServiceProxies(services []*Service, fullPackageName string, packageNa
|
|||||||
return nil
|
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(" ")
|
g := newCode(" ")
|
||||||
err = renderServiceProxies(services, longPackageName, packageName, g)
|
err = renderServiceProxies(services, longPackageName, packageName, g)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import (
|
|||||||
"strings"
|
"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) {
|
findService := func(serviceName string) (service *Service, ok bool) {
|
||||||
for _, service := range services {
|
for _, service := range services {
|
||||||
if service.Name == serviceName {
|
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) {
|
func readServicesInPackage(pkg *ast.Package, packageName string, serviceMap map[string]string) (services map[string]*Service, err error) {
|
||||||
services = []*Service{}
|
services = map[string]*Service{}
|
||||||
for _, serviceName := range serviceNames {
|
for endpoint, serviceName := range serviceMap {
|
||||||
services = append(services, &Service{
|
services[endpoint] = &Service{
|
||||||
Name: serviceName,
|
Name: serviceName,
|
||||||
Methods: []*Method{},
|
Methods: []*Method{},
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
for _, file := range pkg.Files {
|
for _, file := range pkg.Files {
|
||||||
err = readServiceFile(file, packageName, services)
|
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) {
|
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(serviceNames) == 0 {
|
if len(serviceMap) == 0 {
|
||||||
err = errors.New("nothing to do service names are empty")
|
err = errors.New("nothing to do service names are empty")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -191,8 +191,7 @@ func Read(goPath string, packageName string, serviceNames []string) (services []
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
services, err = readServicesInPackage(pkg, packageName, serviceMap)
|
||||||
services, err = readServicesInPackage(pkg, packageName, serviceNames)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -98,11 +98,11 @@ func renderStruct(str *Struct, mappings config.TypeScriptMappings, scalarTypes m
|
|||||||
return nil
|
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"
|
clientName := service.Name + "Client"
|
||||||
ts.l("export class " + clientName + " {").ind(1).
|
ts.l("export class " + clientName + " {").ind(1).
|
||||||
l("static defaultInst = new " + clientName + ";").
|
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 {
|
for _, method := range service.Methods {
|
||||||
|
|
||||||
ts.app(lcfirst(method.Name) + "(")
|
ts.app(lcfirst(method.Name) + "(")
|
||||||
@ -272,7 +272,7 @@ func ucFirst(str string) string {
|
|||||||
return constPrefix
|
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(" ")
|
ts := newCode(" ")
|
||||||
if !SkipGoTSRPC {
|
if !SkipGoTSRPC {
|
||||||
ts.l(`module GoTSRPC {
|
ts.l(`module GoTSRPC {
|
||||||
@ -305,8 +305,8 @@ func RenderTypeScriptServices(services []*Service, mappings config.TypeScriptMap
|
|||||||
ts.l("module " + tsModuleName + " {")
|
ts.l("module " + tsModuleName + " {")
|
||||||
ts.ind(1)
|
ts.ind(1)
|
||||||
|
|
||||||
for _, service := range services {
|
for endPoint, service := range services {
|
||||||
err = renderService(service, mappings, scalarTypes, ts)
|
err = renderService(service, endPoint, mappings, scalarTypes, ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user