mosers
/
eaas-vde-proxy
Archiviert
1
0
Fork 0
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
Dieses Repo ist archiviert. Du kannst Dateien sehen und es klonen, kannst aber nicht pushen oder Issues/Pull-Requests öffnen.

58 Zeilen
1.0 KiB
Go

package cmd
import (
"io"
"log"
"os"
"os/exec"
)
// Overloads the exec.Cmd class to save the full command
// and adds custom input/output pipes
type cmd struct {
fullCommand string
*exec.Cmd
inReader io.Reader
InWriter io.Writer
OutReader io.Reader
outWriter io.Writer
}
// New creates a new cmd object with given arguments and returns it
func New(name string, args string) *cmd{
ir, iw := io.Pipe()
or, ow := io.Pipe()
c := cmd {
name + " " + args,
exec.Command(name, args),
ir,
iw,
or,
ow,
}
c.Stdout = c.outWriter
c.Stdin = c.inReader
c.Stderr = os.Stderr
return &c
}
// Execute runs Cmd.Start() and catches the possible error
func (c *cmd) Execute() {
err := c.Start()
if err != nil {
log.Printf("%s failed with %s\n", c.fullCommand, err)
}
}
// WaitH runs Cmd.Wait() and catches the possible error
func (c *cmd) WaitH() {
err := c.Wait()
if err != nil {
log.Printf("%s failed with %s\n", c.fullCommand, err)
}
}
const (
Out = ">> " // Prefix for traffic from VM
In = "<< " // Prefix for traffic to VM
)