From d4f0663924fe4de436d80ce7c5905fc27734e648 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Wed, 11 Nov 2020 20:22:35 +1100 Subject: [PATCH] Better global.d.ts --- v2/pkg/parser/generate.go | 36 ++++++++++++++++++++++++++++---- v2/pkg/parser/globals.d.template | 26 +++++++++++++++++++++++ v2/pkg/parser/globals.d.ts | 6 ------ 3 files changed, 58 insertions(+), 10 deletions(-) create mode 100644 v2/pkg/parser/globals.d.template delete mode 100644 v2/pkg/parser/globals.d.ts diff --git a/v2/pkg/parser/generate.go b/v2/pkg/parser/generate.go index 219747ed..27f048c8 100644 --- a/v2/pkg/parser/generate.go +++ b/v2/pkg/parser/generate.go @@ -58,10 +58,8 @@ func (p *Parser) generateModule() error { return err } - // Copy the globals.d.ts file - srcFile = fs.RelativePath("./globals.d.ts") - tgtFile = filepath.Join(moduleDir, "globals.d.ts") - err = fs.CopyFile(srcFile, tgtFile) + // Generate the globals.d.ts file + err = generateGlobalsTS(moduleDir, packagesToGenerate) if err != nil { return err } @@ -178,3 +176,33 @@ func generateIndexJS(dir string, packages []*Package) error { return nil } + +func generateGlobalsTS(dir string, packages []*Package) error { + + // Get path to local file + templateFile := fs.RelativePath("./globals.d.template") + + // Load template + templateData := fs.MustLoadString(templateFile) + packagesTemplate, err := template.New("globals").Parse(templateData) + if err != nil { + return errors.Wrap(err, "Error creating template") + } + + // Execute template + var buffer bytes.Buffer + err = packagesTemplate.Execute(&buffer, packages) + if err != nil { + return errors.Wrap(err, "Error generating code") + } + + // Calculate target filename + indexJS := filepath.Join(dir, "globals.d.ts") + + err = ioutil.WriteFile(indexJS, buffer.Bytes(), 0755) + if err != nil { + return errors.Wrap(err, "Error writing backend package globals.d.ts file") + } + + return nil +} diff --git a/v2/pkg/parser/globals.d.template b/v2/pkg/parser/globals.d.template new file mode 100644 index 00000000..10110443 --- /dev/null +++ b/v2/pkg/parser/globals.d.template @@ -0,0 +1,26 @@ +// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL +// This file is automatically generated. DO NOT EDIT + +interface Window { + + backend: { + + {{- range . }}{{$packageName:=.Name}} + {{- if .HasBoundStructs }} + {{ $packageName }}: { + {{- range .Structs }} + {{- if .IsBound }} + {{if .Comments }}{{range .Comments}}// {{ . }}{{end}}{{end}} + {{.Name}}: { + {{range .Methods}} + {{if .Comments }}{{range .Comments}}// {{ . }}{{end}}{{end}} + {{.Name}}: ({{.InputsAsTSText $packageName}}) => Promise<{{.OutputsAsTSText $packageName}}>, + {{end}} + } + {{- end}} + {{- end}} + } + {{- end}} + {{- end}} + } +} \ No newline at end of file diff --git a/v2/pkg/parser/globals.d.ts b/v2/pkg/parser/globals.d.ts deleted file mode 100644 index 4c441632..00000000 --- a/v2/pkg/parser/globals.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -interface Window { - backend: any -} \ No newline at end of file