func main()

in container/go/cmd/zipper/zipper.go [34:89]


func main() {
	flag.Parse()

	if *src == "" {
		log.Fatalln("Required option -src was not specified.")
	}

	if *dst == "" {
		log.Fatalln("Required option -dst was not specified.")
	}

	var copy_from io.Reader
	var copy_to io.Writer

	f, err := os.Open(*src)
	if err != nil {
		log.Fatalf("Unable to read input file: %v", err)
	}
	t, err := os.Create(*dst)
	if err != nil {
		log.Fatalf("Unable to create output file: %v", err)
	}

	if *decompress {
		zr, err := gzip.NewReader(f)
		if err != nil {
			log.Fatalf("Unable to read: %v", err)
		}
		defer func() {
			if err := zr.Close(); err != nil {
				log.Fatalf("Unable to close gzip reader: %v", err)
			}
		}()
		copy_from = zr
		copy_to = t
	} else {
		level := gzip.DefaultCompression
		if *fast {
			level = gzip.BestSpeed
		}
		zw, err := gzip.NewWriterLevel(t, level)
		if err != nil {
			log.Fatalf("Unable to create gzip writer: %v", err)
		}
		defer func() {
			if err := zw.Close(); err != nil {
				log.Fatalf("Unable to close gzip writer: %v", err)
			}
		}()
		copy_from = f
		copy_to = zw
	}
	if _, err := io.Copy(copy_to, copy_from); err != nil {
		log.Fatalf("Unable to perform the gzip operation from %q to %q: %v", *src, *dst, err)
	}
}