feat: add linux prereq checking

This commit is contained in:
Lea Anthony
2018-12-19 12:49:04 -08:00
parent 6ecdb43148
commit 5e42d67570
2 changed files with 44 additions and 7 deletions

View File

@@ -1,6 +1,8 @@
package cmd
import "fmt"
import (
"strings"
)
// LinuxDistribution is of type int
type LinuxDistribution int
@@ -12,23 +14,45 @@ const (
// DistroInfo contains all the information relating to a linux distribution
type DistroInfo struct {
distribution LinuxDistribution
name string
release string
Distribution LinuxDistribution
Description string
Release string
Codename string
DistributorId string
}
func getLinuxDistroInfo() *DistroInfo {
func GetLinuxDistroInfo() *DistroInfo {
result := &DistroInfo{}
program := NewProgramHelper()
// Does lsb_release exist?
lsbRelease := program.FindProgram("lsb_release")
if lsbRelease != nil {
stdout, _, err := lsbRelease.Run("-a")
stdout, _, err, _ := lsbRelease.Run("-a")
if err != nil {
return nil
}
fmt.Println(stdout)
for _, line := range strings.Split(stdout, "\n") {
if strings.Contains(line, ":") {
// Iterate lines a
details := strings.Split(line, ":")
key := strings.TrimSpace(details[0])
value := strings.TrimSpace(details[1])
switch key {
case "Distributor ID":
result.DistributorId = value
case "Description":
result.Description = value
case "Release":
result.Release = value
case "Codename":
result.Codename = value
}
}
}
}
return result
}

View File

@@ -51,6 +51,14 @@ var platformbinaryPrerequisites = make(map[string]*binaryPrerequisites)
func init() {
platformbinaryPrerequisites["darwin"] = &binaryPrerequisites{}
newDarwinbinaryPrerequisite("clang", "Please install with `xcode-select --install` and try again")
platformbinaryPrerequisites["linux"] = &binaryPrerequisites{}
linuxInfo := GetLinuxDistroInfo()
switch linuxInfo.Distribution {
case Ubuntu:
newLinuxbinaryPrerequisite("gcc", "Please install with 'sudo apt install build-essential' ")
default:
newLinuxbinaryPrerequisite("gcc", "Please install with your system package manager.")
}
}
func newDarwinbinaryPrerequisite(name, help string) {
@@ -58,6 +66,11 @@ func newDarwinbinaryPrerequisite(name, help string) {
platformbinaryPrerequisites["darwin"].Add(prereq)
}
func newLinuxbinaryPrerequisite(name, help string) {
prereq := newBinaryPrerequisite(name, help)
platformbinaryPrerequisites["linux"].Add(prereq)
}
func CheckBinaryPrerequisites() (*binaryPrerequisites, *binaryPrerequisites, error) {
platformPreReqs := platformbinaryPrerequisites[runtime.GOOS]
if platformPreReqs == nil {