func packIt(a archive.Archive, srcs []string, dst string) (error, error) { reader, writer := io.Pipe() defer reader.Close() cw := make(chan error, 1) defer close(cw) go func() { defer writer.Close() cw <- a.Pack(srcs, writer) }() bytes, err := ioutil.ReadAll(reader) ioutil.WriteFile(dst, bytes, 0644) werr := <-cw return err, werr }
func rebuildCache(srcs []string, dst string, s storage.Storage, a archive.Archive) error { log.Infof("Rebuilding cache at %s to %s", srcs, dst) reader, writer := io.Pipe() defer reader.Close() cw := make(chan error, 1) defer close(cw) go func() { defer writer.Close() cw <- a.Pack(srcs, writer) }() err := s.Put(dst, reader) werr := <-cw if werr != nil { return werr } return err }