// Copyright 2017 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // +build !plan9 package main import ( "bytes" "context" "os/exec" "runtime" "strings" ) // arch contains either amd64 or 386. var arch = func() string { cmd := exec.Command("uname", "-m") // "x86_64" if runtime.GOOS == "windows" { cmd = exec.Command("powershell", "-command", "(Get-WmiObject -Class Win32_ComputerSystem).SystemType") // "x64-based PC" } out, err := cmd.Output() if err != nil { // a sensible default? return "amd64" } if bytes.Contains(out, []byte("64")) { return "amd64" } return "386" }() func findGo(ctx context.Context, cmd string) (string, error) { out, err := exec.CommandContext(ctx, cmd, "go").CombinedOutput() return strings.TrimSpace(string(out)), err }