5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-04 01:19:12 +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/devserver"
"github.com/wailsapp/wails/v2/internal/frontend/dispatcher" "github.com/wailsapp/wails/v2/internal/frontend/dispatcher"
"github.com/wailsapp/wails/v2/internal/frontend/runtime" "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/logger"
"github.com/wailsapp/wails/v2/internal/menumanager" "github.com/wailsapp/wails/v2/internal/menumanager"
"github.com/wailsapp/wails/v2/internal/project"
"github.com/wailsapp/wails/v2/internal/signal" "github.com/wailsapp/wails/v2/internal/signal"
pkglogger "github.com/wailsapp/wails/v2/pkg/logger" pkglogger "github.com/wailsapp/wails/v2/pkg/logger"
"github.com/wailsapp/wails/v2/pkg/options" "github.com/wailsapp/wails/v2/pkg/options"
"os"
"path/filepath"
) )
// App defines a Wails application structure // 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} bindingExemptions := []interface{}{appoptions.OnStartup, appoptions.OnShutdown, appoptions.OnDomReady}
appBindings := binding.NewBindings(myLogger, appoptions.Bind, bindingExemptions) appBindings := binding.NewBindings(myLogger, appoptions.Bind, bindingExemptions)
bindingsDir := "." err = generateBindings(appBindings)
err = appBindings.WriteTS(bindingsDir)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -128,3 +131,28 @@ func CreateApp(appoptions *options.App) (*App, error) {
return result, nil 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 ( import (
"fmt" "fmt"
"github.com/tkrajina/typescriptify-golang-structs/typescriptify" "github.com/tkrajina/typescriptify-golang-structs/typescriptify"
"path/filepath"
"reflect" "reflect"
"runtime" "runtime"
"strings" "strings"
@ -30,6 +29,9 @@ func NewBindings(logger *logger.Logger, structPointersToBind []interface{}, exem
converter: typescriptify.New(), converter: typescriptify.New(),
} }
// No backups
result.converter.WithBackupDir("")
for _, exemption := range exemptions { for _, exemption := range exemptions {
if exemptions == nil { if exemptions == nil {
continue continue
@ -71,8 +73,9 @@ func (b *Bindings) Add(structPtr interface{}) error {
return nil return nil
} }
func (b *Bindings) WriteTS(dir string) error { func (b *Bindings) WriteTS(filename string) error {
return b.converter.ConvertToFile(filepath.Join(dir, "models.ts")) println("WriteTS to:", filename)
return b.converter.ConvertToFile(filename)
} }
func (b *Bindings) DB() *DB { func (b *Bindings) DB() *DB {