|
|
// 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 }
|