mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 18:42:23 +08:00

* add tspostfix and tsprefix flags + organise under struct * postifx -> suffix * tsPrefix options on bindings struct * pass prefix and suffix to the executable * add support for CLI flags for generating module * method to set TSpref/suff to bindings * use passed ts prefix for typescriptify * add brief Readme udpate to include new flags * create reusable common flags * use common flags instead of hardcoded text * support tsprefix & suffix for dev * add tsPrefix & tsSuffix for build cmd * take pref & suff in account when gen d.ts * export colorsful log functions into utils for reuse * detect and warn the user about usage of reserved keyword * fmt * add TrimSpace on fn input * refactor utils -> logutils * add bindings -> ts_generation options to wailsjson parse * use wailsjson for ts generation * update warning message + extract to func * remove suff/pref info from readme * update json schema * add tests for prefix and suffix case * rename suffix method * Update v2/internal/typescriptify/typescriptify.go Co-authored-by: Lea Anthony <lea.anthony@gmail.com> * Update website/static/schemas/config.v2.json Co-authored-by: Lea Anthony <lea.anthony@gmail.com> * Update website/static/schemas/config.v2.json Co-authored-by: Lea Anthony <lea.anthony@gmail.com> * update changelog * Minor tweaks Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
115 lines
2.5 KiB
Go
115 lines
2.5 KiB
Go
//go:build bindings
|
|
|
|
package app
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"flag"
|
|
|
|
"github.com/leaanthony/gosod"
|
|
"github.com/wailsapp/wails/v2/internal/binding"
|
|
"github.com/wailsapp/wails/v2/internal/frontend/runtime/wrapper"
|
|
"github.com/wailsapp/wails/v2/internal/fs"
|
|
"github.com/wailsapp/wails/v2/internal/logger"
|
|
"github.com/wailsapp/wails/v2/internal/project"
|
|
"github.com/wailsapp/wails/v2/pkg/options"
|
|
)
|
|
|
|
func (a *App) Run() error {
|
|
|
|
// Create binding exemptions - Ugly hack. There must be a better way
|
|
bindingExemptions := []interface{}{
|
|
a.options.OnStartup,
|
|
a.options.OnShutdown,
|
|
a.options.OnDomReady,
|
|
a.options.OnBeforeClose,
|
|
}
|
|
|
|
// Check for CLI Flags
|
|
bindingFlags := flag.NewFlagSet("bindings", flag.ContinueOnError)
|
|
|
|
var tsPrefixFlag *string
|
|
var tsPostfixFlag *string
|
|
|
|
tsPrefix := os.Getenv("tsprefix")
|
|
if tsPrefix == "" {
|
|
tsPrefixFlag = bindingFlags.String("tsprefix", "", "Prefix for generated typescript entities")
|
|
}
|
|
|
|
tsSuffix := os.Getenv("tssuffix")
|
|
if tsSuffix == "" {
|
|
tsPostfixFlag = bindingFlags.String("tssuffix", "", "Suffix for generated typescript entities")
|
|
}
|
|
|
|
_ = bindingFlags.Parse(os.Args[1:])
|
|
if tsPrefixFlag != nil {
|
|
tsPrefix = *tsPrefixFlag
|
|
}
|
|
if tsPostfixFlag != nil {
|
|
tsSuffix = *tsPostfixFlag
|
|
}
|
|
|
|
appBindings := binding.NewBindings(a.logger, a.options.Bind, bindingExemptions, IsObfuscated())
|
|
|
|
appBindings.SetTsPrefix(tsPrefix)
|
|
appBindings.SetTsPostfix(tsSuffix)
|
|
|
|
err := generateBindings(appBindings)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// CreateApp creates the app!
|
|
func CreateApp(appoptions *options.App) (*App, error) {
|
|
// Set up logger
|
|
myLogger := logger.New(appoptions.Logger)
|
|
myLogger.SetLogLevel(appoptions.LogLevel)
|
|
|
|
result := &App{
|
|
logger: myLogger,
|
|
options: appoptions,
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
wailsjsbasedir := filepath.Join(projectConfig.GetWailsJSDir(), "wailsjs")
|
|
|
|
runtimeDir := filepath.Join(wailsjsbasedir, "runtime")
|
|
_ = os.RemoveAll(runtimeDir)
|
|
extractor := gosod.New(wrapper.RuntimeWrapper)
|
|
err = extractor.Extract(runtimeDir, nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
goBindingsDir := filepath.Join(wailsjsbasedir, "go")
|
|
err = os.RemoveAll(goBindingsDir)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
_ = fs.MkDirs(goBindingsDir)
|
|
|
|
err = bindings.GenerateGoBindings(goBindingsDir)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return fs.SetPermissions(wailsjsbasedir, 0755)
|
|
}
|