generated from dave/wails-template
	
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"embed"
 | |
| 	"encoding/json"
 | |
| 	"fmt"
 | |
| 	"io"
 | |
| 	"log"
 | |
| 	"os"
 | |
| 
 | |
| 	"github.com/wailsapp/wails/v2"
 | |
| 	"github.com/wailsapp/wails/v2/pkg/options"
 | |
| 	"github.com/wailsapp/wails/v2/pkg/options/assetserver"
 | |
| )
 | |
| 
 | |
| var Error *log.Logger
 | |
| var Warning *log.Logger
 | |
| 
 | |
| func init() {
 | |
| 	log.SetFlags(log.Lmicroseconds | log.Lshortfile)
 | |
| 
 | |
| 	Error = log.New(io.MultiWriter(os.Stderr, os.Stdout),
 | |
| 		fmt.Sprintf("%sERROR:%s ", "\033[0;101m", "\033[0m"),
 | |
| 		log.Lmicroseconds|log.Lshortfile)
 | |
| 	Warning = log.New(io.MultiWriter(os.Stdout),
 | |
| 		fmt.Sprintf("%sWarning:%s ", "\033[0;93m", "\033[0m"),
 | |
| 		log.Lmicroseconds|log.Lshortfile)
 | |
| }
 | |
| 
 | |
| //go:embed all:frontend/dist
 | |
| var assets embed.FS
 | |
| var settingsFilePath = "settings.json"
 | |
| var settings *Settings
 | |
| var addonService *AddonService
 | |
| 
 | |
| type Settings struct {
 | |
| 	GamePath string           `json:"gamePath"`
 | |
| 	Addons   map[string]Addon `json:"addons"`
 | |
| }
 | |
| 
 | |
| func SaveSettings(settings Settings) error {
 | |
| 	log.Printf("Saving settings: %+v", settings)
 | |
| 	settingsFile, err := os.OpenFile(settingsFilePath, os.O_RDWR|os.O_CREATE, 0644)
 | |
| 	if err != nil {
 | |
| 		Error.Printf("error opening settings file: %s", err)
 | |
| 		return err
 | |
| 	}
 | |
| 	defer settingsFile.Close()
 | |
| 	return json.NewEncoder(settingsFile).Encode(settings)
 | |
| }
 | |
| 
 | |
| func main() {
 | |
| 	settingsFile, err := os.OpenFile(settingsFilePath, os.O_RDWR|os.O_CREATE, 0644)
 | |
| 	if err != nil {
 | |
| 		Error.Printf("error opening settings file: %s", err)
 | |
| 		return
 | |
| 	}
 | |
| 	err = json.NewDecoder(settingsFile).Decode(&settings)
 | |
| 	if err != nil {
 | |
| 		Warning.Printf("error decoding settings: %s", err)
 | |
| 		settings = &Settings{}
 | |
| 	}
 | |
| 	settingsFile.Close()
 | |
| 	log.Printf("Loaded settings: %+v", settings)
 | |
| 	for name, addon := range settings.Addons {
 | |
| 		addon.Name = name
 | |
| 		settings.Addons[name] = addon
 | |
| 	}
 | |
| 
 | |
| 	addonService = &AddonService{}
 | |
| 	addonService.Addons = settings.Addons
 | |
| 	for _, addon := range addonService.Addons {
 | |
| 		version, err := addonService.GetLocalVersion(addon.Name)
 | |
| 		if err != nil {
 | |
| 			Warning.Printf("error getting local version: %s", err)
 | |
| 		}
 | |
| 		log.Printf("%s %#v", addon.Name, version)
 | |
| 	}
 | |
| 
 | |
| 	app := NewApp()
 | |
| 
 | |
| 	err = wails.Run(&options.App{
 | |
| 		Title:  "wails-template",
 | |
| 		Width:  700,
 | |
| 		Height: 700,
 | |
| 		AssetServer: &assetserver.Options{
 | |
| 			Assets: assets,
 | |
| 		},
 | |
| 		BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1},
 | |
| 		OnStartup:        app.startup,
 | |
| 		Bind: []interface{}{
 | |
| 			app,
 | |
| 		},
 | |
| 	})
 | |
| 
 | |
| 	if err != nil {
 | |
| 		println("Error:", err.Error())
 | |
| 	}
 | |
| 	SaveSettings(*settings)
 | |
| }
 |