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