From 5f457dba8e18be67f9139a038164b97144e5f09b Mon Sep 17 00:00:00 2001 From: ALMAS <9382335+almas1992@users.noreply.github.com> Date: Fri, 15 Dec 2023 17:14:15 +0800 Subject: [PATCH] [v2/Mac] Add `Apple Silicon` hardware detection to `wails doctor` (#3129) * [v2/Mac] Add Apple Silicon hardware detection to `wails doctor` * add change log --- v2/cmd/wails/doctor.go | 47 ++++++++++++++++++++++++++++++--- website/src/pages/changelog.mdx | 4 +++ 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/v2/cmd/wails/doctor.go b/v2/cmd/wails/doctor.go index 35e3a13ff..5306cab17 100644 --- a/v2/cmd/wails/doctor.go +++ b/v2/cmd/wails/doctor.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "github.com/wailsapp/wails/v2/internal/shell" "runtime" "runtime/debug" "strconv" @@ -93,7 +94,14 @@ func diagnoseEnvironment(f *flags.Doctor) error { systemTabledata = append(systemTabledata, []string{prefix, cpu.Model}) } } else { - systemTabledata = append(systemTabledata, []string{"CPU", "Unknown"}) + cpuInfo := "Unknown" + if runtime.GOOS == "darwin" { + // Try to get CPU info from sysctl + if stdout, _, err := shell.RunCommand("", "sysctl", "-n", "machdep.cpu.brand_string"); err == nil { + cpuInfo = strings.TrimSpace(stdout) + } + } + systemTabledata = append(systemTabledata, []string{"CPU", cpuInfo}) } // Probe GPU @@ -112,14 +120,47 @@ func diagnoseEnvironment(f *flags.Doctor) error { systemTabledata = append(systemTabledata, []string{prefix, details}) } } else { - systemTabledata = append(systemTabledata, []string{"GPU", "Unknown"}) + gpuInfo := "Unknown" + if runtime.GOOS == "darwin" { + // Try to get GPU info from system_profiler + if stdout, _, err := shell.RunCommand("", "system_profiler", "SPDisplaysDataType"); err == nil { + var ( + startCapturing bool + gpuInfoDetails []string + ) + for _, line := range strings.Split(stdout, "\n") { + if strings.Contains(line, "Chipset Model") { + startCapturing = true + } + if startCapturing { + gpuInfoDetails = append(gpuInfoDetails, strings.TrimSpace(line)) + } + if strings.Contains(line, "Metal Support") { + break + } + } + if len(gpuInfoDetails) > 0 { + gpuInfo = strings.Join(gpuInfoDetails, " ") + } + } + } + systemTabledata = append(systemTabledata, []string{"GPU", gpuInfo}) } memory, _ := ghw.Memory() if memory != nil { systemTabledata = append(systemTabledata, []string{"Memory", strconv.Itoa(int(memory.TotalPhysicalBytes/1024/1024/1024)) + "GB"}) } else { - systemTabledata = append(systemTabledata, []string{"Memory", "Unknown"}) + memInfo := "Unknown" + if runtime.GOOS == "darwin" { + // Try to get Memory info from sysctl + if stdout, _, err := shell.RunCommand("", "sysctl", "-n", "hw.memsize"); err == nil { + if memSize, err := strconv.Atoi(strings.TrimSpace(stdout)); err == nil { + memInfo = strconv.Itoa(memSize/1024/1024/1024) + "GB" + } + } + } + systemTabledata = append(systemTabledata, []string{"Memory", memInfo}) } err = pterm.DefaultTable.WithBoxed().WithData(systemTabledata).Render() diff --git a/website/src/pages/changelog.mdx b/website/src/pages/changelog.mdx index 25fd96c96..452b8c65e 100644 --- a/website/src/pages/changelog.mdx +++ b/website/src/pages/changelog.mdx @@ -14,6 +14,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Add Apple Silicon hardware detection to `wails doctor`. Changed by @almas1992 in [PR](https://github.com/wailsapp/wails/pull/3129) + ## v2.7.1 - 2023-12-10 ### Fixed