robo/cmd/rclient/main.go

53 lines
787 B
Go

package main
import (
"bufio"
"encoding/gob"
"encoding/json"
"fmt"
"log"
"net"
"os"
"mcquay.me/robo"
)
const usage = "rsend <hostname>"
func main() {
if len(os.Args) != 2 {
fmt.Fprintf(os.Stderr, "%s\n", usage)
os.Exit(1)
}
var err error
conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", os.Args[1], robo.Port))
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}
enc := gob.NewEncoder(conn)
s := bufio.NewScanner(os.Stdin)
e := robo.Event{}
for s.Scan() {
json.Unmarshal(s.Bytes(), &e)
log.Printf("sending: %+v\n", e)
err = enc.Encode(e)
if err != nil {
break
}
}
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}
if err := s.Err(); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}
}