From 8067a1cedb154de35d5030a357ead98d0c96452b Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Tue, 20 Dec 2022 22:08:02 +1100 Subject: [PATCH] Add nosyncgomod flag (#2215) * Add nosyncgomod flag * Fix tests on unix --- v2/cmd/wails/build.go | 8 +- v2/cmd/wails/flags/buildcommon.go | 1 + v2/cmd/wails/internal/dev/dev.go | 2 +- v2/internal/gomod/gomod.go | 8 -- v2/internal/gomod/gomod_data_unix.go | 135 ++++++++++++++++++++++++ v2/internal/gomod/gomod_data_windows.go | 135 ++++++++++++++++++++++++ v2/internal/gomod/gomod_test.go | 135 ------------------------ website/docs/reference/cli.mdx | 4 + 8 files changed, 281 insertions(+), 147 deletions(-) create mode 100644 v2/internal/gomod/gomod_data_unix.go create mode 100644 v2/internal/gomod/gomod_data_windows.go diff --git a/v2/cmd/wails/build.go b/v2/cmd/wails/build.go index 863cafcf9..5d284e9a2 100644 --- a/v2/cmd/wails/build.go +++ b/v2/cmd/wails/build.go @@ -107,9 +107,11 @@ func buildApplication(f *flags.Build) error { return err } - err = gomod.SyncGoMod(logger, f.UpdateWailsVersionGoMod) - if err != nil { - return err + if !f.NoSyncGoMod { + err = gomod.SyncGoMod(logger, f.UpdateWailsVersionGoMod) + if err != nil { + return err + } } // Check platform diff --git a/v2/cmd/wails/flags/buildcommon.go b/v2/cmd/wails/flags/buildcommon.go index b4014c6c1..dcad33abf 100644 --- a/v2/cmd/wails/flags/buildcommon.go +++ b/v2/cmd/wails/flags/buildcommon.go @@ -8,6 +8,7 @@ type BuildCommon struct { SkipFrontend bool `name:"s" description:"Skips building the frontend"` Verbosity int `name:"v" description:"Verbosity level (0 = quiet, 1 = normal, 2 = verbose)"` Tags string `description:"Build tags to pass to Go compiler. Must be quoted. Space or comma (but not both) separated"` + NoSyncGoMod bool `description:"Don't sync go.mod"` } func (c BuildCommon) Default() BuildCommon { diff --git a/v2/cmd/wails/internal/dev/dev.go b/v2/cmd/wails/internal/dev/dev.go index a17ed5977..c330470e1 100644 --- a/v2/cmd/wails/internal/dev/dev.go +++ b/v2/cmd/wails/internal/dev/dev.go @@ -75,7 +75,7 @@ func Application(f *flags.Dev, logger *clilogger.CLILogger) error { cwd := lo.Must(os.Getwd()) // Update go.mod to use current wails version - err := gomod.SyncGoMod(logger, true) + err := gomod.SyncGoMod(logger, !f.NoSyncGoMod) if err != nil { return err } diff --git a/v2/internal/gomod/gomod.go b/v2/internal/gomod/gomod.go index 2a07bbf73..8ab7e0b66 100644 --- a/v2/internal/gomod/gomod.go +++ b/v2/internal/gomod/gomod.go @@ -2,8 +2,6 @@ package gomod import ( "fmt" - "strings" - "github.com/Masterminds/semver" "golang.org/x/mod/modfile" ) @@ -40,12 +38,6 @@ func GoModOutOfSync(goModData []byte, currentVersion string) (bool, error) { return false, fmt.Errorf("Unable to find Wails in go.mod") } - // check if a specific patch is targetted by a commit - // i.e. - v2.2.1-0.20221117091924-a8bbce6a126b - if strings.Contains(gomodversion.Original(), "-") { - return false, nil - } - result, err := semver.NewVersion(currentVersion) if err != nil || result == nil { return false, fmt.Errorf("Unable to parse Wails version: %s", currentVersion) diff --git a/v2/internal/gomod/gomod_data_unix.go b/v2/internal/gomod/gomod_data_unix.go new file mode 100644 index 000000000..dbe9b1247 --- /dev/null +++ b/v2/internal/gomod/gomod_data_unix.go @@ -0,0 +1,135 @@ +//go:build unix + +package gomod + +const basic string = `module changeme + +go 1.17 + +require github.com/wailsapp/wails/v2 v2.0.0-beta.7 + +//replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => /home/lea/wails/v2 +` +const basicUpdated string = `module changeme + +go 1.17 + +require github.com/wailsapp/wails/v2 v2.0.0-beta.20 + +//replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => /home/lea/wails/v2 +` + +const multilineRequire = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.7 +) + +//replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => /home/lea/wails/v2 +` +const multilineReplace = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.7 +) + +replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => /home/lea/wails/v2 +` + +const multilineReplaceNoVersion = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.7 +) + +replace github.com/wailsapp/wails/v2 => /home/lea/wails/v2 +` + +const multilineReplaceNoVersionBlock = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.7 +) + +replace ( + github.com/wailsapp/wails/v2 => /home/lea/wails/v2 +) +` + +const multilineReplaceBlock = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.7 +) + +replace ( + github.com/wailsapp/wails/v2 v2.0.0-beta.7 => /home/lea/wails/v2 +) +` + +const multilineRequireUpdated = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.20 +) + +//replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => /home/lea/wails/v2 +` + +const multilineReplaceUpdated = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.20 +) + +replace github.com/wailsapp/wails/v2 v2.0.0-beta.20 => /home/lea/wails/v2 +` +const multilineReplaceNoVersionUpdated = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.20 +) + +replace github.com/wailsapp/wails/v2 => /home/lea/wails/v2 +` +const multilineReplaceNoVersionBlockUpdated = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.20 +) + +replace ( + github.com/wailsapp/wails/v2 => /home/lea/wails/v2 +) +` + +const multilineReplaceBlockUpdated = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.20 +) + +replace ( + github.com/wailsapp/wails/v2 v2.0.0-beta.20 => /home/lea/wails/v2 +) +` diff --git a/v2/internal/gomod/gomod_data_windows.go b/v2/internal/gomod/gomod_data_windows.go new file mode 100644 index 000000000..691129c78 --- /dev/null +++ b/v2/internal/gomod/gomod_data_windows.go @@ -0,0 +1,135 @@ +//go:build windows + +package gomod + +const basic string = `module changeme + +go 1.17 + +require github.com/wailsapp/wails/v2 v2.0.0-beta.7 + +//replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 +` +const basicUpdated string = `module changeme + +go 1.17 + +require github.com/wailsapp/wails/v2 v2.0.0-beta.20 + +//replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 +` + +const multilineRequire = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.7 +) + +//replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 +` +const multilineReplace = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.7 +) + +replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 +` + +const multilineReplaceNoVersion = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.7 +) + +replace github.com/wailsapp/wails/v2 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 +` + +const multilineReplaceNoVersionBlock = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.7 +) + +replace ( + github.com/wailsapp/wails/v2 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 +) +` + +const multilineReplaceBlock = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.7 +) + +replace ( + github.com/wailsapp/wails/v2 v2.0.0-beta.7 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 +) +` + +const multilineRequireUpdated = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.20 +) + +//replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 +` + +const multilineReplaceUpdated = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.20 +) + +replace github.com/wailsapp/wails/v2 v2.0.0-beta.20 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 +` +const multilineReplaceNoVersionUpdated = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.20 +) + +replace github.com/wailsapp/wails/v2 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 +` +const multilineReplaceNoVersionBlockUpdated = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.20 +) + +replace ( + github.com/wailsapp/wails/v2 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 +) +` + +const multilineReplaceBlockUpdated = `module changeme + +go 1.17 + +require ( + github.com/wailsapp/wails/v2 v2.0.0-beta.20 +) + +replace ( + github.com/wailsapp/wails/v2 v2.0.0-beta.20 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 +) +` diff --git a/v2/internal/gomod/gomod_test.go b/v2/internal/gomod/gomod_test.go index 034d4a89a..eeafd0f9a 100644 --- a/v2/internal/gomod/gomod_test.go +++ b/v2/internal/gomod/gomod_test.go @@ -1,5 +1,3 @@ -//go:build windows - package gomod import ( @@ -10,15 +8,6 @@ import ( "github.com/matryer/is" ) -const basic string = `module changeme - -go 1.17 - -require github.com/wailsapp/wails/v2 v2.0.0-beta.7 - -//replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 -` - func TestGetWailsVersion(t *testing.T) { tests := []struct { name string @@ -42,84 +31,6 @@ func TestGetWailsVersion(t *testing.T) { } } -const basicUpdated string = `module changeme - -go 1.17 - -require github.com/wailsapp/wails/v2 v2.0.0-beta.20 - -//replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 -` - -const multilineRequire = `module changeme - -go 1.17 - -require ( - github.com/wailsapp/wails/v2 v2.0.0-beta.7 -) - -//replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 -` -const multilineReplace = `module changeme - -go 1.17 - -require ( - github.com/wailsapp/wails/v2 v2.0.0-beta.7 -) - -replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 -` - -const multilineReplaceNoVersion = `module changeme - -go 1.17 - -require ( - github.com/wailsapp/wails/v2 v2.0.0-beta.7 -) - -replace github.com/wailsapp/wails/v2 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 -` - -const multilineReplaceNoVersionBlock = `module changeme - -go 1.17 - -require ( - github.com/wailsapp/wails/v2 v2.0.0-beta.7 -) - -replace ( - github.com/wailsapp/wails/v2 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 -) -` - -const multilineReplaceBlock = `module changeme - -go 1.17 - -require ( - github.com/wailsapp/wails/v2 v2.0.0-beta.7 -) - -replace ( - github.com/wailsapp/wails/v2 v2.0.0-beta.7 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 -) -` - -const multilineRequireUpdated = `module changeme - -go 1.17 - -require ( - github.com/wailsapp/wails/v2 v2.0.0-beta.20 -) - -//replace github.com/wailsapp/wails/v2 v2.0.0-beta.7 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 -` - func TestUpdateGoModVersion(t *testing.T) { is2 := is.New(t) @@ -180,52 +91,6 @@ func TestGoModOutOfSync(t *testing.T) { } } -const multilineReplaceUpdated = `module changeme - -go 1.17 - -require ( - github.com/wailsapp/wails/v2 v2.0.0-beta.20 -) - -replace github.com/wailsapp/wails/v2 v2.0.0-beta.20 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 -` -const multilineReplaceNoVersionUpdated = `module changeme - -go 1.17 - -require ( - github.com/wailsapp/wails/v2 v2.0.0-beta.20 -) - -replace github.com/wailsapp/wails/v2 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 -` -const multilineReplaceNoVersionBlockUpdated = `module changeme - -go 1.17 - -require ( - github.com/wailsapp/wails/v2 v2.0.0-beta.20 -) - -replace ( - github.com/wailsapp/wails/v2 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 -) -` - -const multilineReplaceBlockUpdated = `module changeme - -go 1.17 - -require ( - github.com/wailsapp/wails/v2 v2.0.0-beta.20 -) - -replace ( - github.com/wailsapp/wails/v2 v2.0.0-beta.20 => C:\Users\leaan\Documents\wails-v2-beta\wails\v2 -) -` - const basicGo118 string = `module changeme go 1.18 diff --git a/website/docs/reference/cli.mdx b/website/docs/reference/cli.mdx index 0d1656aa3..4a73292ae 100644 --- a/website/docs/reference/cli.mdx +++ b/website/docs/reference/cli.mdx @@ -74,6 +74,7 @@ If you are unsure about a template, inspect `package.json` and `wails.json` for | -windowsconsole | Keep the console window for Windows builds | | | -obfuscate | Obfuscate the application using [garble](https://github.com/burrowers/garble) | false | | -garbleargs | Arguments to pass to garble | `-literals -tiny -seed=random` | +| -nosyncgomod | Do not sync go.mod with the Wails version | false | For a detailed description of the `webview2` flag, please refer to the [Windows](../guides/windows.mdx) Guide. @@ -188,6 +189,9 @@ Your system is ready for Wails development! | -save | Saves the given `assetdir`, `reloaddirs`, `wailsjsdir`, `debounce`, `devserver` and `frontenddevserverurl` flags in `wails.json` to become the defaults for subsequent invocations. | | | -race | Build with Go's race detector | false | | -s | Skip building the frontend | false | +| -nosyncgomod | Do not sync go.mod with the Wails version | false | + + Example: