github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/cmd/unpacker-tool/addDevice.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io" 6 "os" 7 "os/exec" 8 9 uclient "github.com/Cloud-Foundations/Dominator/imageunpacker/client" 10 "github.com/Cloud-Foundations/Dominator/lib/log" 11 "github.com/Cloud-Foundations/Dominator/lib/srpc" 12 ) 13 14 func addDeviceSubcommand(args []string, logger log.DebugLogger) error { 15 if err := addDevice(getClient(), args[0], args[1], args[2:]); err != nil { 16 return fmt.Errorf("Error adding device: %s", err) 17 } 18 return nil 19 } 20 21 func addDevice(client *srpc.Client, deviceId, command string, 22 args []string) error { 23 return uclient.AddDevice(client, deviceId, 24 func() error { return adder(command, args) }) 25 } 26 27 func adder(command string, args []string) error { 28 cmd := exec.Command(command, args...) 29 cmd.Stdin = os.Stdin 30 cmd.Stdout = os.Stdout 31 cmd.Stderr = os.Stderr 32 if err := cmd.Run(); err != nil { 33 if err != io.EOF { 34 return err 35 } 36 } 37 return nil 38 }