diff --git a/src/arch/arch.go b/src/arch/arch.go index 8a5454c4..0b51a5d3 100644 --- a/src/arch/arch.go +++ b/src/arch/arch.go @@ -2,11 +2,11 @@ package arch import ( //"regexp" + "encoding/hex" + "fmt" "os" - //"os/exec" + "os/exec" "strings" - //"fmt" - "encoding/hex" ) func SearchBytesInFile( path string, match string, limit int) bool { @@ -61,10 +61,14 @@ func Bit(path string) string { } func Validate(str string) (string){ + osArch, err := GetOSArchitecture() + if err != nil { + fmt.Println("Failed to get OS architecture:", err) + } if str == "" { str = strings.ToLower(os.Getenv("PROCESSOR_ARCHITECTURE")) } - if strings.Contains(str, "arm64") { + if strings.Contains(str, "arm64") || strings.Contains(strings.ToLower(osArch), "arm") { return "arm64" } if strings.Contains(str, "64") { @@ -72,3 +76,20 @@ func Validate(str string) (string){ } return "32" } + +func GetOSArchitecture() (string, error) { + cmd := exec.Command("wmic", "os", "get", "osarchitecture") + output, err := cmd.Output() + if err != nil { + return "", err + } + lines := strings.Split(string(output), "\n") + for _, line := range lines { + line = strings.TrimSpace(line) + if line == "" || strings.Contains(line, "OSArchitecture") { + continue + } + return line, nil + } + return "", fmt.Errorf("failed to find OS architecture") +}