summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--human.go36
-rw-r--r--linux.go34
2 files changed, 66 insertions, 4 deletions
diff --git a/human.go b/human.go
index 61da744..73c7089 100644
--- a/human.go
+++ b/human.go
@@ -4,19 +4,44 @@ import (
"fmt"
"os"
"os/exec"
+ "runtime"
"go.wit.com/log"
)
func CheckProtoc() bool {
- if checkCmdSimple("protoc") {
+ if !checkCmdSimple("protoc") {
userInstructions()
- log.Sleep(2)
+ switch runtime.GOOS {
+ case "linux":
+ linuxInstall("protoc")
+ case "macos":
+ log.Info("todo: print instructions here for installing protoc on macos. brew install?")
+ case "windows":
+ log.Info("todo: print instructions here for installing protoc on windows")
+ default:
+ log.Info("todo: print instructions here for installing protoc on", runtime.GOOS)
+ }
+ return false
+ }
+ if !checkCmdSimple("protoc") {
return false
}
- if checkCmdSimple("protoc-gen-go") {
+
+ if !checkCmdSimple("protoc-gen-go") {
userInstructions()
- log.Sleep(2)
+ switch runtime.GOOS {
+ case "linux":
+ linuxInstall("protoc-gen-go")
+ case "macos":
+ log.Info("todo: print instructions here for installing protoc on macos. brew install?")
+ case "windows":
+ log.Info("todo: print instructions here for installing protoc on windows")
+ default:
+ log.Info("todo: print instructions here for installing protoc on", runtime.GOOS)
+ }
+ }
+ if !checkCmdSimple("protoc-gen-go") {
return false
}
return true
@@ -43,6 +68,8 @@ func checkCmd(cmd string) (string, error) {
return path, err
}
+/*
+
func oldcheckCmd(cmd string) {
// path, err := exec.LookPath(cmd)
_, err := exec.LookPath(cmd)
@@ -54,6 +81,7 @@ func oldcheckCmd(cmd string) {
// fmt.Printf("%s is available at %s\n", cmd, path)
}
}
+*/
// todo: figure out how to determine, in a package, what the program name is
func okExit(s string) {
diff --git a/linux.go b/linux.go
new file mode 100644
index 0000000..efdb6e8
--- /dev/null
+++ b/linux.go
@@ -0,0 +1,34 @@
+package fhelp
+
+// auto run protoc with the correct args
+
+import (
+ "bufio"
+ "fmt"
+ "os"
+ "strings"
+
+ "go.wit.com/lib/gui/shell"
+ "go.wit.com/log"
+)
+
+func linuxInstall(pkg string) {
+ cmd := []string{"apt", "install", "-y", pkg}
+ if pkg == "protoc" {
+ cmd = []string{"apt", "install", "-y", "protobuf-compiler"}
+ }
+ log.Info("Would you like to run", "sudo", cmd, "now?")
+ fmt.Fprintf(os.Stdout, "(y)es or (n)o ? ")
+
+ scanner := bufio.NewScanner(os.Stdin)
+ for scanner.Scan() {
+ line := scanner.Text()
+ line = strings.TrimSpace(line)
+ line = strings.ToLower(line)
+ switch line {
+ case "y":
+ shell.Sudo(cmd)
+ default:
+ }
+ }
+}