parse exec() value from the OS
Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
parent
3bc6811811
commit
d2223187ea
|
@ -2,28 +2,13 @@ package main
|
||||||
|
|
||||||
import "log"
|
import "log"
|
||||||
import "fmt"
|
import "fmt"
|
||||||
import "strings"
|
|
||||||
import "reflect"
|
import "reflect"
|
||||||
import "os"
|
import "os"
|
||||||
import "os/exec"
|
|
||||||
import "bytes"
|
|
||||||
|
|
||||||
import "github.com/gookit/config"
|
import "github.com/gookit/config"
|
||||||
import "github.com/andlabs/ui"
|
import "github.com/andlabs/ui"
|
||||||
import "github.com/davecgh/go-spew/spew"
|
import "github.com/davecgh/go-spew/spew"
|
||||||
|
|
||||||
// dns
|
|
||||||
// import "github.com/miekg/dns"
|
|
||||||
|
|
||||||
// reminder to use protobuf
|
|
||||||
// https://github.com/golang/protobuf
|
|
||||||
|
|
||||||
// reminder to use this for JSON
|
|
||||||
// https://github.com/tidwall/gjson
|
|
||||||
// value := gjson.Get(json, "name.last")
|
|
||||||
// println(value.String())
|
|
||||||
// value := gjson.Get(json, friends.#[last=="Murphy"].first)
|
|
||||||
|
|
||||||
// use mergo to merge structs
|
// use mergo to merge structs
|
||||||
// import "github.com/imdario/mergo"
|
// import "github.com/imdario/mergo"
|
||||||
// mergo.Merge(&dest, src)
|
// mergo.Merge(&dest, src)
|
||||||
|
@ -45,22 +30,6 @@ func rsync(mybut *ui.Button) {
|
||||||
log.Println("run rsync here")
|
log.Println("run rsync here")
|
||||||
}
|
}
|
||||||
|
|
||||||
func exampleCommand(a string, b ...string) {
|
|
||||||
// cmd := exec.Command(range myargs)
|
|
||||||
// args := []string{"/tmp", "/"}
|
|
||||||
// cmd := exec.Command(args)
|
|
||||||
cmd := exec.Command(a, b...)
|
|
||||||
cmd.Stdin = strings.NewReader("foobar")
|
|
||||||
var out bytes.Buffer
|
|
||||||
cmd.Stdout = &out
|
|
||||||
err := cmd.Run()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
fmt.Println(out.String())
|
|
||||||
// fmt.Printf("in all caps: %q\n", out.String())
|
|
||||||
}
|
|
||||||
|
|
||||||
func format(mybut *ui.Button) {
|
func format(mybut *ui.Button) {
|
||||||
log.Println("doButton() mybut =", reflect.ValueOf(mybut).Elem())
|
log.Println("doButton() mybut =", reflect.ValueOf(mybut).Elem())
|
||||||
log.Println("format and mount here")
|
log.Println("format and mount here")
|
||||||
|
@ -77,6 +46,7 @@ func format(mybut *ui.Button) {
|
||||||
simpleProcess("pwd")
|
simpleProcess("pwd")
|
||||||
simpleProcess("ls -l /aksd")
|
simpleProcess("ls -l /aksd")
|
||||||
return
|
return
|
||||||
|
|
||||||
simpleProcess("parted -s /dev/sdb mklabel msdos")
|
simpleProcess("parted -s /dev/sdb mklabel msdos")
|
||||||
simpleProcess("parted -s /dev/sdb mkpart primary ext4 1MiB 8GB")
|
simpleProcess("parted -s /dev/sdb mkpart primary ext4 1MiB 8GB")
|
||||||
simpleProcess("parted -s /dev/sdb mkpart primary ext4 8GB 32GB")
|
simpleProcess("parted -s /dev/sdb mkpart primary ext4 8GB 32GB")
|
||||||
|
|
|
@ -65,7 +65,7 @@ func ping(hostname string, count int) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spawns a process and captures stdout and stderr
|
// Spawns a process and captures stdout and stderr
|
||||||
func simpleProcess(cmd string) {
|
func simpleProcess(cmd string) int {
|
||||||
log.Println("START " + cmd)
|
log.Println("START " + cmd)
|
||||||
// cmd := exec.Command("ls", "/tmp", "/ballon", "/")
|
// cmd := exec.Command("ls", "/tmp", "/ballon", "/")
|
||||||
|
|
||||||
|
@ -92,10 +92,20 @@ func simpleProcess(cmd string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// One must wait for the process to formally finish and flush all buffer output
|
// One must wait for the process to formally finish and flush all buffer output
|
||||||
process.Wait()
|
err := process.Wait()
|
||||||
spew.Dump(process.ProcessState)
|
|
||||||
err := process.ProcessState // this should be the exit code of the process
|
// try to process the return value from the OS. As of golang 1.12,
|
||||||
log.Println("END " + cmd, err)
|
// this should be cross platform (linux,macos,windows)
|
||||||
|
if err != nil {
|
||||||
|
spew.Dump(err.(*exec.ExitError))
|
||||||
|
spew.Dump(process.ProcessState)
|
||||||
|
stuff := err.(*exec.ExitError)
|
||||||
|
log.Println("ERROR ", stuff)
|
||||||
|
log.Println("END ", cmd)
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
log.Println("END " + cmd)
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func exampleScanner() {
|
func exampleScanner() {
|
||||||
|
|
Loading…
Reference in New Issue