From cdb74f23d9dfa84c3fe5190768db5869fb035637 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Mon, 28 Feb 2022 18:57:59 +0000 Subject: [PATCH 01/14] Initial commit for accessing app metadata through API --- CHANGELOG.md | 1 + app.go | 19 +++++++++++++++++ app/meta.go | 30 +++++++++++++++++++++++++++ cmd/fyne/internal/commands/build.go | 30 ++++++++++++++++++++++++--- cmd/fyne/internal/commands/package.go | 5 +++++ internal/app/meta.go | 9 ++++++++ 6 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 app/meta.go create mode 100644 internal/app/meta.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 1588326db4..96cd22b559 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ More detailed release notes can be found on the [releases page](https://github.c ### Added * Add SetIcon method on ToolbarAction (#2475) +* Access compiled app metadata using new `App.Metadata()` method ### Changed diff --git a/app.go b/app.go index 1780ef0a50..1e41a2b2d8 100644 --- a/app.go +++ b/app.go @@ -60,6 +60,11 @@ type App interface { // Lifecycle returns a type that allows apps to hook in to lifecycle events. Lifecycle() Lifecycle + + // Metadata returns the application metadata that was set at compile time. + // + // Since: 2.2 + Metadata() AppMetadata } var app App @@ -84,6 +89,20 @@ func CurrentApp() App { return app } +// AppMetadata captures the build metadata for an application. +// +// Since: 2.2 +type AppMetadata struct { + // ID is the unique ID of this application, used by many distribution platforms. + ID string + // Name is the human friendly name of this app. + Name string + // Version represents the version of this application, normally following semantic versioning. + Version string + // Build is the build number of this app, some times appended to the version number. + Build int +} + // Lifecycle represents the various phases that an app can transition through. // // Since: 2.1 diff --git a/app/meta.go b/app/meta.go new file mode 100644 index 0000000000..9279ce5887 --- /dev/null +++ b/app/meta.go @@ -0,0 +1,30 @@ +package app + +import ( + "strconv" + + "fyne.io/fyne/v2" + intapp "fyne.io/fyne/v2/internal/app" +) + +var ( + meta fyne.AppMetadata +) + +func init() { + build, err := strconv.Atoi(intapp.MetaBuild) + if err != nil { + build = 1 + } + + meta = fyne.AppMetadata{ + ID: intapp.MetaID, + Name: intapp.MetaName, + Version: intapp.MetaVersion, + Build: build, + } +} + +func (a *fyneApp) Metadata() fyne.AppMetadata { + return meta +} diff --git a/cmd/fyne/internal/commands/build.go b/cmd/fyne/internal/commands/build.go index 4a1bc4b483..78ff3609f9 100644 --- a/cmd/fyne/internal/commands/build.go +++ b/cmd/fyne/internal/commands/build.go @@ -13,6 +13,9 @@ type builder struct { os, srcdir string release bool tags []string + + id, name, version string + buildNum int } func (b *builder) build() error { @@ -27,14 +30,17 @@ func (b *builder) build() error { env = append(env, "CGO_CFLAGS=-mmacosx-version-min=10.11", "CGO_LDFLAGS=-mmacosx-version-min=10.11") } + meta := b.generateMetaLDFlags() if goos == "windows" { if b.release { - args = append(args, "-ldflags", "-s -w -H=windowsgui") + args = append(args, "-ldflags", "-s -w -H=windowsgui "+meta) } else { - args = append(args, "-ldflags", "-H=windowsgui") + args = append(args, "-ldflags", "-H=windowsgui "+meta) } } else if b.release { - args = append(args, "-ldflags", "-s -w") + args = append(args, "-ldflags", "-s -w "+meta) + } else { + args = append(args, "-ldflags", meta) } // handle build tags @@ -60,6 +66,24 @@ func (b *builder) build() error { return err } +func (b *builder) generateMetaLDFlags() string { + var vars []string + if b.id != "" { + vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaID=%s'", b.id)) + } + if b.name != "" { + vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaName=%s'", b.name)) + } + if b.version != "" { + vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/aapp.MetaVersion=%s'", b.version)) + } + if b.buildNum != 0 { + vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaBuild=%d'", b.buildNum)) + } + + return strings.Join(vars, " ") +} + func targetOS() string { osEnv, ok := os.LookupEnv("GOOS") if ok { diff --git a/cmd/fyne/internal/commands/package.go b/cmd/fyne/internal/commands/package.go index 11c165093d..0f46fd4f17 100644 --- a/cmd/fyne/internal/commands/package.go +++ b/cmd/fyne/internal/commands/package.go @@ -187,6 +187,11 @@ func (p *Packager) buildPackage() error { srcdir: p.srcDir, release: p.release, tags: tags, + + id: p.appID, + name: p.name, + version: p.appVersion, + buildNum: p.appBuild, } return b.build() diff --git a/internal/app/meta.go b/internal/app/meta.go new file mode 100644 index 0000000000..034efac776 --- /dev/null +++ b/internal/app/meta.go @@ -0,0 +1,9 @@ +package app + +// these internal variables are set by the fyne build command so that the "FyneApp.toml" data is readable at runtime. +var ( + MetaID = "com.example" + MetaName = "Fyne App" + MetaVersion = "1.0.0" + MetaBuild = "1" +) From dd95366061c0dff7ae8b63cc03045b65d3c3d66c Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Mon, 28 Feb 2022 18:58:47 +0000 Subject: [PATCH 02/14] Use metadata API to fix Windows bug Fixes #1940 --- CHANGELOG.md | 2 +- app/app_windows.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96cd22b559..450792faa7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,7 @@ More detailed release notes can be found on the [releases page](https://github.c ### Fixed -* +* SendNotification does not show app name on Windows (#1940) ## 2.1.1 - 22 October 2021 diff --git a/app/app_windows.go b/app/app_windows.go index d3aa20f98a..d4cb38b3f8 100644 --- a/app/app_windows.go +++ b/app/app_windows.go @@ -74,9 +74,9 @@ var scriptNum = 0 func (a *fyneApp) SendNotification(n *fyne.Notification) { title := escapeNotificationString(n.Title) content := escapeNotificationString(n.Content) - appID := a.UniqueID() // TODO once we have an app name compiled in this could be improved + appID := a.UniqueID() if appID == "" || strings.Index(appID, "missing-id") == 0 { - appID = "Fyne app" + appID = a.Metadata().Name } script := fmt.Sprintf(notificationTemplate, title, content, appID) From 89f368a7f6c1402bc89f8bd1128465498e6a5a2e Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Mon, 28 Feb 2022 19:13:29 +0000 Subject: [PATCH 03/14] oops, missed the test data in commit --- app_test.go | 4 ++++ test/testapp.go | 4 ++++ theme/themedtestapp.go | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/app_test.go b/app_test.go index 12aa969910..6ed371a85a 100644 --- a/app_test.go +++ b/app_test.go @@ -57,6 +57,10 @@ func (dummyApp) Lifecycle() Lifecycle { return nil } +func (dummyApp) Metadata() AppMetadata { + return AppMetadata{} +} + func TestSetCurrentApp(t *testing.T) { a := &dummyApp{} SetCurrentApp(a) diff --git a/test/testapp.go b/test/testapp.go index f6754fce15..fdb579a2a4 100644 --- a/test/testapp.go +++ b/test/testapp.go @@ -86,6 +86,10 @@ func (a *testApp) Lifecycle() fyne.Lifecycle { return a.lifecycle } +func (a *testApp) Metadata() fyne.AppMetadata { + return fyne.AppMetadata{} // just dummy data +} + func (a *testApp) lastAppliedTheme() fyne.Theme { a.propertyLock.Lock() defer a.propertyLock.Unlock() diff --git a/theme/themedtestapp.go b/theme/themedtestapp.go index d6b220790b..8741c10d32 100644 --- a/theme/themedtestapp.go +++ b/theme/themedtestapp.go @@ -64,6 +64,10 @@ func (t *themedApp) Lifecycle() fyne.Lifecycle { return nil } +func (t *themedApp) Metadata() fyne.AppMetadata { + return fyne.AppMetadata{} +} + func (t *themedApp) PrimaryColor() string { return ColorBlue } From f9cb797bc5d7baf5efb45ce338238522e7cd6895 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Mon, 28 Feb 2022 14:47:17 -0800 Subject: [PATCH 04/14] Update cmd/fyne/internal/commands/build.go Fix typo Co-authored-by: Luca Corbo --- cmd/fyne/internal/commands/build.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/fyne/internal/commands/build.go b/cmd/fyne/internal/commands/build.go index 78ff3609f9..0501394a36 100644 --- a/cmd/fyne/internal/commands/build.go +++ b/cmd/fyne/internal/commands/build.go @@ -75,7 +75,7 @@ func (b *builder) generateMetaLDFlags() string { vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaName=%s'", b.name)) } if b.version != "" { - vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/aapp.MetaVersion=%s'", b.version)) + vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaVersion=%s'", b.version)) } if b.buildNum != 0 { vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaBuild=%d'", b.buildNum)) From 56cd58b628d9cb876467061f00189f99c5c98b3a Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 1 Mar 2022 09:18:59 +0000 Subject: [PATCH 05/14] Address comments and add test --- cmd/fyne/internal/commands/build.go | 6 +++--- cmd/fyne/internal/commands/build_test.go | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 cmd/fyne/internal/commands/build_test.go diff --git a/cmd/fyne/internal/commands/build.go b/cmd/fyne/internal/commands/build.go index 0501394a36..d6a583f92b 100644 --- a/cmd/fyne/internal/commands/build.go +++ b/cmd/fyne/internal/commands/build.go @@ -69,13 +69,13 @@ func (b *builder) build() error { func (b *builder) generateMetaLDFlags() string { var vars []string if b.id != "" { - vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaID=%s'", b.id)) + vars = append(vars, "-X 'fyne.io/fyne/v2/internal/app.MetaID="+b.id+"'") } if b.name != "" { - vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaName=%s'", b.name)) + vars = append(vars, "-X 'fyne.io/fyne/v2/internal/app.MetaName="+b.name+"'") } if b.version != "" { - vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaVersion=%s'", b.version)) + vars = append(vars, "-X 'fyne.io/fyne/v2/internal/app.MetaVersion="+b.version+"'") } if b.buildNum != 0 { vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaBuild=%d'", b.buildNum)) diff --git a/cmd/fyne/internal/commands/build_test.go b/cmd/fyne/internal/commands/build_test.go new file mode 100644 index 0000000000..8d1c697dfe --- /dev/null +++ b/cmd/fyne/internal/commands/build_test.go @@ -0,0 +1,18 @@ +package commands + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestBuildGenerateMetaLDFlags(t *testing.T) { + b := &builder{} + assert.Equal(t, "", b.generateMetaLDFlags()) + + b.id = "com.example" + assert.Equal(t, "-X 'fyne.io/fyne/v2/internal/app.MetaID=com.example'", b.generateMetaLDFlags()) + + b.version = "1.2.3" + assert.Equal(t, "-X 'fyne.io/fyne/v2/internal/app.MetaID=com.example' -X 'fyne.io/fyne/v2/internal/app.MetaVersion=1.2.3'", b.generateMetaLDFlags()) +} From 3ddda4e513fa21d61489e5784bb869a3ce9888bf Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 1 Mar 2022 09:59:30 +0000 Subject: [PATCH 06/14] Fix broken align --- internal/app/meta.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/app/meta.go b/internal/app/meta.go index 034efac776..005bef0bc8 100644 --- a/internal/app/meta.go +++ b/internal/app/meta.go @@ -2,8 +2,8 @@ package app // these internal variables are set by the fyne build command so that the "FyneApp.toml" data is readable at runtime. var ( - MetaID = "com.example" - MetaName = "Fyne App" + MetaID = "com.example" + MetaName = "Fyne App" MetaVersion = "1.0.0" - MetaBuild = "1" + MetaBuild = "1" ) From 2092ed02d4174fa2a015c6a75ad9c67a84bd0094 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 1 Mar 2022 10:40:52 +0000 Subject: [PATCH 07/14] Fix output of build when no meta tags present --- cmd/fyne/internal/commands/build.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/fyne/internal/commands/build.go b/cmd/fyne/internal/commands/build.go index 1b8c106e9a..96a34c645e 100644 --- a/cmd/fyne/internal/commands/build.go +++ b/cmd/fyne/internal/commands/build.go @@ -88,10 +88,10 @@ func (b *builder) build() error { } } else if b.release { args = append(args, "-ldflags", "-s -w "+meta) - } else { + } else if meta != "" { args = append(args, "-ldflags", meta) } - } else { + } else if meta != "" { args = append(args, "-ldflags", meta) } From aba5eb966dbdd1faf6035dc07c576c4302d885fa Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 1 Mar 2022 20:43:03 +0000 Subject: [PATCH 08/14] Package up icon metadata too :) --- app.go | 2 ++ app/meta.go | 18 ++++++++++++++++++ cmd/fyne/internal/commands/build.go | 22 ++++++++++++++++++++-- cmd/fyne/internal/commands/package.go | 2 ++ internal/app/meta.go | 1 + 5 files changed, 43 insertions(+), 2 deletions(-) diff --git a/app.go b/app.go index bb3c98638a..365d592125 100644 --- a/app.go +++ b/app.go @@ -105,6 +105,8 @@ type AppMetadata struct { Version string // Build is the build number of this app, some times appended to the version number. Build int + // Icon contains, if present, a resource of the icon that was bundled at build time. + Icon Resource } // Lifecycle represents the various phases that an app can transition through. diff --git a/app/meta.go b/app/meta.go index 9279ce5887..74de31b00b 100644 --- a/app/meta.go +++ b/app/meta.go @@ -1,7 +1,10 @@ package app import ( + "encoding/base64" + "io/ioutil" "strconv" + "strings" "fyne.io/fyne/v2" intapp "fyne.io/fyne/v2/internal/app" @@ -18,6 +21,7 @@ func init() { } meta = fyne.AppMetadata{ + Icon: convertIcon(intapp.MetaIcon), ID: intapp.MetaID, Name: intapp.MetaName, Version: intapp.MetaVersion, @@ -28,3 +32,17 @@ func init() { func (a *fyneApp) Metadata() fyne.AppMetadata { return meta } + +func convertIcon(bytes string) fyne.Resource { + data := base64.NewDecoder(base64.StdEncoding, strings.NewReader(bytes)) + img, err := ioutil.ReadAll(data) + if err != nil { + fyne.LogError("Failed to decode icon from embedded data", err) + return nil + } + + return &fyne.StaticResource{ + StaticName: "FyneAppIcon", + StaticContent: img, + } +} \ No newline at end of file diff --git a/cmd/fyne/internal/commands/build.go b/cmd/fyne/internal/commands/build.go index 96a34c645e..0345a88caa 100644 --- a/cmd/fyne/internal/commands/build.go +++ b/cmd/fyne/internal/commands/build.go @@ -1,11 +1,13 @@ package commands import ( + "encoding/base64" "fmt" "os" "runtime" "strings" + "fyne.io/fyne/v2" version "github.com/mcuadros/go-version" ) @@ -16,8 +18,8 @@ type builder struct { runner runner - id, name, version string - buildNum int + icon, id, name, version string + buildNum int } func checkVersion(output string, versionConstraint *version.ConstraintGroup) error { @@ -149,6 +151,22 @@ func (b *builder) generateMetaLDFlags() string { vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaBuild=%d'", b.buildNum)) } + if b.icon != "" { + res, err := fyne.LoadResourceFromPath(b.icon) + if err != nil { + fyne.LogError("Unable to load file "+b.icon, err) + } else { + + staticRes, ok := res.(*fyne.StaticResource) + if !ok { + fyne.LogError("Unable to format resource", fmt.Errorf("unexpected resource type %T", res)) + } else { + data := base64.StdEncoding.EncodeToString(staticRes.StaticContent) + vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaIcon="+data+"'")) + } + } + } + return strings.Join(vars, " ") } diff --git a/cmd/fyne/internal/commands/package.go b/cmd/fyne/internal/commands/package.go index 7e016bfaa2..98567ad8ca 100644 --- a/cmd/fyne/internal/commands/package.go +++ b/cmd/fyne/internal/commands/package.go @@ -198,6 +198,7 @@ func (p *Packager) buildPackage(runner runner) ([]string, error) { tags: tags, runner: runner, + icon: p.icon, id: p.appID, name: p.name, version: p.appVersion, @@ -215,6 +216,7 @@ func (p *Packager) buildPackage(runner runner) ([]string, error) { tags: tags, runner: runner, + icon: p.icon, id: p.appID, name: p.name, version: p.appVersion, diff --git a/internal/app/meta.go b/internal/app/meta.go index 005bef0bc8..54a545b6a6 100644 --- a/internal/app/meta.go +++ b/internal/app/meta.go @@ -2,6 +2,7 @@ package app // these internal variables are set by the fyne build command so that the "FyneApp.toml" data is readable at runtime. var ( + MetaIcon = "" // this will contain base64 encoded icon bytes MetaID = "com.example" MetaName = "Fyne App" MetaVersion = "1.0.0" From b39daff594349abbd47b8cf58c196f21f3fb3595 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 1 Mar 2022 21:09:38 +0000 Subject: [PATCH 09/14] We don't have to use the WithID constructor any more if using FyneApp.toml --- app/app.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/app.go b/app/app.go index 50f241db07..b795ca63b0 100644 --- a/app/app.go +++ b/app/app.go @@ -46,6 +46,9 @@ func (a *fyneApp) UniqueID() string { if a.uniqueID != "" { return a.uniqueID } + if a.Metadata().ID != "" { + return a.Metadata().ID + } fyne.LogError("Preferences API requires a unique ID, use app.NewWithID()", nil) a.uniqueID = "missing-id-" + strconv.FormatInt(time.Now().Unix(), 10) // This is a fake unique - it just has to not be reused... From 5c1a8009864a7104ae216e57f59806580a84839d Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 1 Mar 2022 21:23:03 +0000 Subject: [PATCH 10/14] Fix broken align --- app/meta.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/meta.go b/app/meta.go index 74de31b00b..36147e624a 100644 --- a/app/meta.go +++ b/app/meta.go @@ -42,7 +42,7 @@ func convertIcon(bytes string) fyne.Resource { } return &fyne.StaticResource{ - StaticName: "FyneAppIcon", + StaticName: "FyneAppIcon", StaticContent: img, } -} \ No newline at end of file +} From 8a4d6dc9fd7c0bb33385a420e76370ed3809bb39 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 1 Mar 2022 21:44:11 +0000 Subject: [PATCH 11/14] Make the ldflags parameters easier to extend --- cmd/fyne/internal/commands/build.go | 37 ++++++++++++++++------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/cmd/fyne/internal/commands/build.go b/cmd/fyne/internal/commands/build.go index 0345a88caa..faf611fb4a 100644 --- a/cmd/fyne/internal/commands/build.go +++ b/cmd/fyne/internal/commands/build.go @@ -5,6 +5,7 @@ import ( "fmt" "os" "runtime" + "strconv" "strings" "fyne.io/fyne/v2" @@ -137,36 +138,40 @@ func (b *builder) build() error { } func (b *builder) generateMetaLDFlags() string { - var vars []string - if b.id != "" { - vars = append(vars, "-X 'fyne.io/fyne/v2/internal/app.MetaID="+b.id+"'") - } - if b.name != "" { - vars = append(vars, "-X 'fyne.io/fyne/v2/internal/app.MetaName="+b.name+"'") - } - if b.version != "" { - vars = append(vars, "-X 'fyne.io/fyne/v2/internal/app.MetaVersion="+b.version+"'") + buildIDString := "" + if b.buildNum > 0 { + buildIDString = strconv.Itoa(b.buildNum) } - if b.buildNum != 0 { - vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaBuild=%d'", b.buildNum)) - } - + iconBytes := "" if b.icon != "" { res, err := fyne.LoadResourceFromPath(b.icon) if err != nil { fyne.LogError("Unable to load file "+b.icon, err) } else { - staticRes, ok := res.(*fyne.StaticResource) if !ok { fyne.LogError("Unable to format resource", fmt.Errorf("unexpected resource type %T", res)) } else { - data := base64.StdEncoding.EncodeToString(staticRes.StaticContent) - vars = append(vars, fmt.Sprintf("-X 'fyne.io/fyne/v2/internal/app.MetaIcon="+data+"'")) + iconBytes = base64.StdEncoding.EncodeToString(staticRes.StaticContent) } } } + inserts := [][2]string{ + {"MetaID", b.id}, + {"MetaName", b.name}, + {"MetaVersion", b.version}, + {"MetaID", buildIDString}, + {"MetaIcon", iconBytes}, + } + + var vars []string + for _, item := range inserts { + if item[1] != "" { + vars = append(vars, "-X 'fyne.io/fyne/v2/internal/app."+item[0]+"="+item[1]+"'") + } + } + return strings.Join(vars, " ") } From efa454b674ee9a1e1dc162cc1af45927ef5db169 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 1 Mar 2022 22:55:30 +0000 Subject: [PATCH 12/14] Fix typo --- cmd/fyne/internal/commands/build.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/fyne/internal/commands/build.go b/cmd/fyne/internal/commands/build.go index faf611fb4a..42ea2178f4 100644 --- a/cmd/fyne/internal/commands/build.go +++ b/cmd/fyne/internal/commands/build.go @@ -161,7 +161,7 @@ func (b *builder) generateMetaLDFlags() string { {"MetaID", b.id}, {"MetaName", b.name}, {"MetaVersion", b.version}, - {"MetaID", buildIDString}, + {"MetaBuild", buildIDString}, {"MetaIcon", iconBytes}, } From 3d5912bd87ede927b897e957c62a992bd7ee1367 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Tue, 1 Mar 2022 22:56:04 +0000 Subject: [PATCH 13/14] Update to latest develop and add JS support in pacakge meta --- cmd/fyne/internal/commands/package.go | 6 ++++++ cmd/fyne/internal/commands/package_test.go | 16 ++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/cmd/fyne/internal/commands/package.go b/cmd/fyne/internal/commands/package.go index 501d54a4ce..5954c68ef9 100644 --- a/cmd/fyne/internal/commands/package.go +++ b/cmd/fyne/internal/commands/package.go @@ -234,6 +234,12 @@ func (p *Packager) buildPackage(runner runner) ([]string, error) { release: p.release, tags: tags, runner: runner, + + icon: p.icon, + id: p.appID, + name: p.name, + version: p.appVersion, + buildNum: p.appBuild, } err = bGopherJS.build() diff --git a/cmd/fyne/internal/commands/package_test.go b/cmd/fyne/internal/commands/package_test.go index d0e9be07d4..cc25fd7edf 100644 --- a/cmd/fyne/internal/commands/package_test.go +++ b/cmd/fyne/internal/commands/package_test.go @@ -119,7 +119,9 @@ func Test_PackageWasm(t *testing.T) { }, { expectedValue: expectedValue{ - args: []string{"build", "-o", "myTest.wasm"}, + args: []string{"build", "-ldflags", + "-X 'fyne.io/fyne/v2/internal/app.MetaName=myTest.wasm' -X 'fyne.io/fyne/v2/internal/app.MetaVersion=1.0.0' -X 'fyne.io/fyne/v2/internal/app.MetaBuild=1'", + "-o", "myTest.wasm"}, env: []string{"GOARCH=wasm", "GOOS=js"}, osEnv: true, dir: "myTest", @@ -226,7 +228,9 @@ func Test_PackageGopherJS(t *testing.T) { expected := []mockRunner{ { expectedValue: expectedValue{ - args: []string{"build", "-o", "myTest.js"}, + args: []string{"build", "-ldflags", + "-X 'fyne.io/fyne/v2/internal/app.MetaName=myTest.js' -X 'fyne.io/fyne/v2/internal/app.MetaVersion=1.0.0' -X 'fyne.io/fyne/v2/internal/app.MetaBuild=1'", + "-o", "myTest.js"}, osEnv: true, dir: "myTest", }, @@ -354,7 +358,9 @@ func Test_PackageWeb(t *testing.T) { }, { expectedValue: expectedValue{ - args: []string{"build", "-o", "myTest.wasm"}, + args: []string{"build", "-ldflags", + "-X 'fyne.io/fyne/v2/internal/app.MetaName=myTest' -X 'fyne.io/fyne/v2/internal/app.MetaVersion=1.0.0' -X 'fyne.io/fyne/v2/internal/app.MetaBuild=1'", + "-o", "myTest.wasm"}, env: []string{"GOARCH=wasm", "GOOS=js"}, osEnv: true, dir: "myTest", @@ -365,7 +371,9 @@ func Test_PackageWeb(t *testing.T) { }, { expectedValue: expectedValue{ - args: []string{"build", "-o", "myTest.js"}, + args: []string{"build", "-ldflags", + "-X 'fyne.io/fyne/v2/internal/app.MetaName=myTest' -X 'fyne.io/fyne/v2/internal/app.MetaVersion=1.0.0' -X 'fyne.io/fyne/v2/internal/app.MetaBuild=1'", + "-o", "myTest.js"}, osEnv: true, dir: "myTest", }, From a1112e3c9ebf350aa85a9d2789a8b2ed94348d3a Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Sun, 6 Mar 2022 15:38:06 +0000 Subject: [PATCH 14/14] Use injected icon for app icon by default --- app/app.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/app.go b/app/app.go index b795ca63b0..6164dfa1c2 100644 --- a/app/app.go +++ b/app/app.go @@ -35,7 +35,11 @@ type fyneApp struct { } func (a *fyneApp) Icon() fyne.Resource { - return a.icon + if a.icon != nil { + return a.icon + } + + return a.Metadata().Icon } func (a *fyneApp) SetIcon(icon fyne.Resource) {