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

View File

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

View File

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

View File

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

View File

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