1package main 2 3import ( 4 "errors" 5 "flag" 6 "io/ioutil" 7 "os" 8 9 "github.com/golang/snappy" 10) 11 12var ( 13 decode = flag.Bool("d", false, "decode") 14 encode = flag.Bool("e", false, "encode") 15) 16 17func run() error { 18 flag.Parse() 19 if *decode == *encode { 20 return errors.New("exactly one of -d or -e must be given") 21 } 22 23 in, err := ioutil.ReadAll(os.Stdin) 24 if err != nil { 25 return err 26 } 27 28 out := []byte(nil) 29 if *decode { 30 out, err = snappy.Decode(nil, in) 31 if err != nil { 32 return err 33 } 34 } else { 35 out = snappy.Encode(nil, in) 36 } 37 _, err = os.Stdout.Write(out) 38 return err 39} 40 41func main() { 42 if err := run(); err != nil { 43 os.Stderr.WriteString(err.Error() + "\n") 44 os.Exit(1) 45 } 46} 47