5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 21:10:54 +08:00

[windows-x] Generate TS models

This commit is contained in:
Lea Anthony 2021-08-28 14:51:40 +10:00
parent 63117fd519
commit c5d9fd1a0d
2 changed files with 36 additions and 5 deletions

View File

@ -12,11 +12,15 @@ import (
"github.com/wailsapp/wails/v2/internal/frontend/devserver"
"github.com/wailsapp/wails/v2/internal/frontend/dispatcher"
"github.com/wailsapp/wails/v2/internal/frontend/runtime"
"github.com/wailsapp/wails/v2/internal/fs"
"github.com/wailsapp/wails/v2/internal/logger"
"github.com/wailsapp/wails/v2/internal/menumanager"
"github.com/wailsapp/wails/v2/internal/project"
"github.com/wailsapp/wails/v2/internal/signal"
pkglogger "github.com/wailsapp/wails/v2/pkg/logger"
"github.com/wailsapp/wails/v2/pkg/options"
"os"
"path/filepath"
)
// App defines a Wails application structure
@ -98,8 +102,7 @@ func CreateApp(appoptions *options.App) (*App, error) {
bindingExemptions := []interface{}{appoptions.OnStartup, appoptions.OnShutdown, appoptions.OnDomReady}
appBindings := binding.NewBindings(myLogger, appoptions.Bind, bindingExemptions)
bindingsDir := "."
err = appBindings.WriteTS(bindingsDir)
err = generateBindings(appBindings)
if err != nil {
return nil, err
}
@ -128,3 +131,28 @@ func CreateApp(appoptions *options.App) (*App, error) {
return result, nil
}
func generateBindings(bindings *binding.Bindings) error {
cwd, err := os.Getwd()
if err != nil {
return err
}
projectConfig, err := project.Load(cwd)
if err != nil {
return err
}
targetDir := filepath.Join(projectConfig.WailsJSDir, "wailsjs", "go")
println("TargetDir =", targetDir)
_ = fs.MkDirs(targetDir)
modelsFile := filepath.Join(targetDir, "models.ts")
err = bindings.WriteTS(modelsFile)
if err != nil {
return err
}
// Write backend method wrappers
return nil
}

View File

@ -3,7 +3,6 @@ package binding
import (
"fmt"
"github.com/tkrajina/typescriptify-golang-structs/typescriptify"
"path/filepath"
"reflect"
"runtime"
"strings"
@ -30,6 +29,9 @@ func NewBindings(logger *logger.Logger, structPointersToBind []interface{}, exem
converter: typescriptify.New(),
}
// No backups
result.converter.WithBackupDir("")
for _, exemption := range exemptions {
if exemptions == nil {
continue
@ -71,8 +73,9 @@ func (b *Bindings) Add(structPtr interface{}) error {
return nil
}
func (b *Bindings) WriteTS(dir string) error {
return b.converter.ConvertToFile(filepath.Join(dir, "models.ts"))
func (b *Bindings) WriteTS(filename string) error {
println("WriteTS to:", filename)
return b.converter.ConvertToFile(filename)
}
func (b *Bindings) DB() *DB {