blob: b40a24445d0af8362bc431e32add138f2b47d349 [file] [log] [blame]
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package hostplatform
import (
"fmt"
"runtime"
"strings"
)
// Name returns the name of the current platform, in the form "<os>-<cpu_arch>".
// E.g. "linux-arm64" or "mac-x64". This is useful for finding the path within
// the checkout to a platform-specific prebuilt.
func Name() (string, error) {
return name(runtime.GOOS, runtime.GOARCH)
}
// MakeName constructs the canonical name for a platform given its OS and CPU
// architecture.
func MakeName(os, arch string) string {
return fmt.Sprintf("%s-%s", os, arch)
}
// name is extracted for testability.
func name(goOS, goArch string) (string, error) {
os, ok := map[string]string{
"windows": "win",
"darwin": "mac",
"linux": "linux",
}[goOS]
if !ok {
return "", fmt.Errorf("unsupported GOOS %q", goOS)
}
arch, ok := map[string]string{
"amd64": "x64",
"arm64": "arm64",
}[goArch]
if !ok {
return "", fmt.Errorf("unsupported GOARCH %q", goArch)
}
return MakeName(os, arch), nil
}
// IsMac determines whether the platform corresponds to a Mac platform.
func IsMac(platform string) bool {
return strings.HasPrefix(platform, "mac-")
}