main.go 589 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package main
  2. import (
  3. "archive/zip"
  4. "io"
  5. "log"
  6. "os"
  7. "path/filepath"
  8. "github.com/cryptix/go/logging"
  9. )
  10. var check = logging.CheckFatal
  11. func main() {
  12. f, err := os.Create(os.Args[1])
  13. check(err)
  14. defer f.Close()
  15. zw := zip.NewWriter(f)
  16. err = filepath.Walk(os.Args[2], func(p string, info os.FileInfo, err error) error {
  17. if !info.IsDir() {
  18. w, err := zw.Create(p)
  19. check(err)
  20. zf, err := os.Open(p)
  21. check(err)
  22. _, err = io.Copy(w, zf)
  23. check(err)
  24. log.Println("copied ", p)
  25. }
  26. return nil
  27. })
  28. check(err)
  29. check(zw.Close())
  30. log.Println("zip written..!")
  31. }