From 1eba408f64678873687c7e093e816c69f1d2f9bd Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Sun, 30 May 2021 09:34:07 +1000 Subject: [PATCH] [windows] Better wails doctor diagnostics --- .../wails/internal/commands/doctor/doctor.go | 3 +- v2/internal/system/system.go | 46 +++++++++++++++++++ v2/internal/system/system_windows.go | 30 +++++++++++- 3 files changed, 77 insertions(+), 2 deletions(-) diff --git a/v2/cmd/wails/internal/commands/doctor/doctor.go b/v2/cmd/wails/internal/commands/doctor/doctor.go index 9d3313967..309825c21 100644 --- a/v2/cmd/wails/internal/commands/doctor/doctor.go +++ b/v2/cmd/wails/internal/commands/doctor/doctor.go @@ -68,7 +68,7 @@ func AddSubcommand(app *clir.Cli, w io.Writer) error { name := dependency.Name if dependency.Optional { - name += "*" + name = "*" + name hasOptionalDependencies = true } packageName := "Unknown" @@ -109,6 +109,7 @@ func AddSubcommand(app *clir.Cli, w io.Writer) error { fmt.Fprintf(w, "* - Optional Dependency\n") } w.Flush() + logger.Println("") logger.Println("Diagnosis") logger.Println("---------") diff --git a/v2/internal/system/system.go b/v2/internal/system/system.go index dccf17c82..c4918e48b 100644 --- a/v2/internal/system/system.go +++ b/v2/internal/system/system.go @@ -3,6 +3,8 @@ package system import ( "github.com/wailsapp/wails/v2/internal/system/operatingsystem" "github.com/wailsapp/wails/v2/internal/system/packagemanager" + "os/exec" + "strings" ) // Info holds information about the current operating system, @@ -24,3 +26,47 @@ func GetInfo() (*Info, error) { } return &result, nil } + +func checkNPM() *packagemanager.Dependancy { + + // Check for npm + output, err := exec.Command("npm", "-version").Output() + installed := true + version := "" + if err != nil { + installed = false + } else { + version = strings.TrimSpace(strings.Split(string(output), "\n")[0]) + } + return &packagemanager.Dependancy{ + Name: "npm ", + PackageName: "N/A", + Installed: installed, + InstallCommand: "Install from https://nodejs.org/en/download/", + Version: version, + Optional: false, + External: false, + } +} + +func checkUPX() *packagemanager.Dependancy { + + // Check for npm + output, err := exec.Command("upx", "-V").Output() + installed := true + version := "" + if err != nil { + installed = false + } else { + version = strings.TrimSpace(strings.Split(string(output), "\n")[0]) + } + return &packagemanager.Dependancy{ + Name: "upx ", + PackageName: "N/A", + Installed: installed, + InstallCommand: "Install from https://upx.github.io/", + Version: version, + Optional: true, + External: false, + } +} diff --git a/v2/internal/system/system_windows.go b/v2/internal/system/system_windows.go index f1315d32d..37ea1d6ca 100644 --- a/v2/internal/system/system_windows.go +++ b/v2/internal/system/system_windows.go @@ -2,7 +2,12 @@ package system -import "github.com/wailsapp/wails/v2/internal/system/operatingsystem" +import ( + "github.com/wailsapp/wails/v2/internal/system/operatingsystem" + "github.com/wailsapp/wails/v2/internal/system/packagemanager" + "os/exec" + "strings" +) func (i *Info) discover() error { @@ -12,5 +17,28 @@ func (i *Info) discover() error { return err } i.OS = osinfo + + // Check for gcc + output, err := exec.Command("gcc", "--version").Output() + installed := true + version := "" + if err != nil { + installed = false + } else { + version = strings.TrimSpace(strings.Split(string(output), "\n")[0]) + } + gccDependency := &packagemanager.Dependancy{ + Name: "gcc ", + PackageName: "N/A", + Installed: installed, + InstallCommand: "", + Version: version, + Optional: false, + External: false, + } + i.Dependencies = append(i.Dependencies, gccDependency) + i.Dependencies = append(i.Dependencies, checkNPM()) + i.Dependencies = append(i.Dependencies, checkUPX()) + return nil }