package app import ( "os" "path/filepath" "strings" "fyne.io/fyne/v2" "fyne.io/fyne/v2/internal/build" "fyne.io/fyne/v2/internal/metadata" ) func checkLocalMetadata() { if build.NoMetadata || build.Mode == fyne.BuildRelease { return } dir := getProjectPath() file := filepath.Join(dir, "FyneApp.toml") ref, err := os.Open(file) if err != nil { // no worries, this is just an optional fallback return } defer ref.Close() data, err := metadata.Load(ref) if err != nil || data == nil { fyne.LogError("failed to parse FyneApp.toml", err) return } meta.ID = data.Details.ID meta.Name = data.Details.Name meta.Version = data.Details.Version meta.Build = data.Details.Build if data.Details.Icon != "" { res, err := fyne.LoadResourceFromPath(data.Details.Icon) if err == nil { meta.Icon = metadata.ScaleIcon(res, 512) } } meta.Release = false meta.Custom = data.Development meta.Migrations = data.Migrations } func getProjectPath() string { exe, err := os.Executable() work, _ := os.Getwd() if err != nil { fyne.LogError("failed to lookup build executable", err) return work } temp := os.TempDir() if strings.Contains(exe, temp) || strings.Contains(exe, "go-build") { // this happens with "go run" return work } // we were called with an executable from "go build" return filepath.Dir(exe) }