refactored gotsrpc.yaml => services in a target are a map now => we have default endpoints

This commit is contained in:
Jan Halfar 2016-12-02 18:28:50 +01:00
parent a438c61de8
commit 0e5d2f1d23
6 changed files with 21 additions and 21 deletions

View File

@ -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)

View File

@ -8,7 +8,7 @@ import (
type Target struct {
Package string
Services []string
Services map[string]string
TypeScriptModule string `yaml:"module"`
Out string
}

View File

@ -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
View File

@ -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 {

View File

@ -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
}

View File

@ -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
}