Compare commits
2 Commits
Author | SHA1 | Date |
---|---|---|
|
ef24c64f5b | |
|
06564368bc |
38
human.go
38
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-gen-go") {
|
||||
if !checkCmdSimple("protoc") {
|
||||
return false
|
||||
}
|
||||
|
||||
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
|
||||
|
@ -33,7 +58,7 @@ func checkCmdSimple(cmd string) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func checkCmd(cmd string) (string, error) {
|
||||
func CheckCmd(cmd string) (string, error) {
|
||||
path, err := exec.LookPath(cmd)
|
||||
if err != nil {
|
||||
fmt.Printf("\n%s is not in the PATH\n", cmd)
|
||||
|
@ -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) {
|
||||
|
|
|
@ -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:
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue