From bea8aa477fa06faac4c9a66ad1e1f30ee4b4c4c5 Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Fri, 30 Oct 2020 10:32:30 +1100 Subject: [PATCH] WIP --- v2/go.mod | 2 + v2/go.sum | 2 + .../system/operatingsystem/os_windows.go | 29 ++++++++++++++ v2/internal/system/system_windows.go | 24 ++++++----- v2/pkg/commands/build/backendjs.go | 40 +++++++++++++++++++ v2/pkg/commands/build/build.go | 9 +++++ v2/pkg/commands/build/packager_windows.go | 6 +++ 7 files changed, 103 insertions(+), 9 deletions(-) create mode 100644 v2/internal/system/operatingsystem/os_windows.go create mode 100644 v2/pkg/commands/build/backendjs.go create mode 100644 v2/pkg/commands/build/packager_windows.go diff --git a/v2/go.mod b/v2/go.mod index 38a7327c9..e2cb3aeee 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -11,11 +11,13 @@ require ( github.com/matryer/is v1.4.0 github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect github.com/olekukonko/tablewriter v0.0.4 + github.com/pkg/errors v0.9.1 github.com/tdewolff/minify v2.3.6+incompatible github.com/tdewolff/minify/v2 v2.9.5 github.com/tdewolff/parse v2.3.4+incompatible // indirect github.com/xyproto/xpm v1.2.1 golang.org/x/net v0.0.0-20200822124328-c89045814202 + golang.org/x/sys v0.0.0-20200724161237-0e2f3a69832c golang.org/x/tools v0.0.0-20200902012652-d1954cc86c82 gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect nhooyr.io/websocket v1.8.6 diff --git a/v2/go.sum b/v2/go.sum index e97d9955d..7908b24c8 100644 --- a/v2/go.sum +++ b/v2/go.sum @@ -63,6 +63,8 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWb github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/olekukonko/tablewriter v0.0.4 h1:vHD/YYe1Wolo78koG299f7V/VAS08c6IpCLn+Ejf/w8= github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= diff --git a/v2/internal/system/operatingsystem/os_windows.go b/v2/internal/system/operatingsystem/os_windows.go new file mode 100644 index 000000000..29c17f206 --- /dev/null +++ b/v2/internal/system/operatingsystem/os_windows.go @@ -0,0 +1,29 @@ +package operatingsystem + +import ( + "fmt" + + "golang.org/x/sys/windows/registry" +) + +func platformInfo() (*OS, error) { + // Default value + var result OS + result.ID = "Unknown" + result.Name = "Windows" + result.Version = "Unknown" + + // Credit: https://stackoverflow.com/a/33288328 + // Ignore errors as it isn't a showstopper + key, _ := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE) + + defer key.Close() + + fmt.Printf("%+v\n", key) + + // Ignore errors as it isn't a showstopper + productName, _, _ := key.GetStringValue("ProductName") + fmt.Println(productName) + + return nil, nil +} diff --git a/v2/internal/system/system_windows.go b/v2/internal/system/system_windows.go index 1f1478469..b3d530bc5 100644 --- a/v2/internal/system/system_windows.go +++ b/v2/internal/system/system_windows.go @@ -2,14 +2,20 @@ package system -import ( - "fmt" - "syscall" -) +import "github.com/wailsapp/wails/v2/internal/system/operatingsystem" -func (i *Info) discover() { - dll := syscall.MustLoadDLL("kernel32.dll") - p := dll.MustFindProc("GetVersion") - v, _, _ := p.Call() - fmt.Printf("Windows version %d.%d (Build %d)\n", byte(v), uint8(v>>8), uint16(v>>16)) +func (i *Info) discover() error { + + var err error + osinfo, err := operatingsystem.Info() + if err != nil { + return err + } + i.OS = osinfo + + // dll := syscall.MustLoadDLL("kernel32.dll") + // p := dll.MustFindProc("GetVersion") + // v, _, _ := p.Call() + // fmt.Printf("Windows version %d.%d (Build %d)\n", byte(v), uint8(v>>8), uint16(v>>16)) + return nil } diff --git a/v2/pkg/commands/build/backendjs.go b/v2/pkg/commands/build/backendjs.go new file mode 100644 index 000000000..003da7013 --- /dev/null +++ b/v2/pkg/commands/build/backendjs.go @@ -0,0 +1,40 @@ +package build + +import ( + "path/filepath" + + "github.com/pkg/errors" + "github.com/wailsapp/wails/v2/internal/fs" +) + +// GenerateBackendJSPackage will attempt to create the backend javascript package +// used by the frontend to access methods and structs +func GenerateBackendJSPackage(options *Options) error { + + // Create directory + err := createBackendJSDirectory() + if err != nil { + return errors.Wrap(err, "Error Generating Backend JS Package") + } + + // Generate index.js + + // Generate Method wrappers + // err = generateMethodWrappers() + + // Generate Structs + + // + + return nil +} + +func createBackendJSDirectory() error { + + // Path to package dir + packageDir, err := filepath.Abs("./frontend/backend") + if err != nil { + return err + } + return fs.Mkdir(packageDir) +} diff --git a/v2/pkg/commands/build/build.go b/v2/pkg/commands/build/build.go index e80008c29..a9bd91447 100644 --- a/v2/pkg/commands/build/build.go +++ b/v2/pkg/commands/build/build.go @@ -89,6 +89,14 @@ func Build(options *Options) (string, error) { // Initialise Builder builder.SetProjectData(projectData) + // Generate Frontend JS Package + outputLogger.Print(" - Generating Backend JS Package") + err = GenerateBackendJSPackage(options) + if err != nil { + return "", err + } + outputLogger.Println("done.") + if !options.IgnoreFrontend { outputLogger.Println(" - Building Wails Frontend") err = builder.BuildFrontend(outputLogger) @@ -115,6 +123,7 @@ func Build(options *Options) (string, error) { return "", err } outputLogger.Println("done.") + // Do we need to pack the app? if options.Pack { diff --git a/v2/pkg/commands/build/packager_windows.go b/v2/pkg/commands/build/packager_windows.go new file mode 100644 index 000000000..a64ba85c9 --- /dev/null +++ b/v2/pkg/commands/build/packager_windows.go @@ -0,0 +1,6 @@ +package build + +func packageApplication(options *Options) error { + // TBD + return nil +}