Better global.d.ts

This commit is contained in:
Lea Anthony
2020-11-11 20:22:35 +11:00
parent c30b003369
commit d4f0663924
3 changed files with 58 additions and 10 deletions

View File

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

View File

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

View File

@@ -1,6 +0,0 @@
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
interface Window {
backend: any
}