1
1
mirror of https://github.com/cooperspencer/gickup synced 2024-10-18 13:48:07 +02:00
gickup/zip/zip.go
Andreas Wachter e513444acc
added zip function (#240)
* added zip function

* remove comment
2024-05-10 11:48:48 +02:00

68 lines
999 B
Go

package zip
import (
"archive/zip"
"fmt"
"io"
"os"
"path/filepath"
)
func Zip(repository string, tozip []string) error {
file, err := os.Create(fmt.Sprintf("%s.zip", repository))
if err != nil {
return err
}
defer file.Close()
w := zip.NewWriter(file)
defer w.Close()
parentDir := filepath.Dir(repository)
walker := func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if info.IsDir() {
return nil
}
file, err := os.Open(path)
if err != nil {
return err
}
defer file.Close()
abspath, err := filepath.Rel(parentDir, path)
if err != nil {
return err
}
f, err := w.Create(abspath)
if err != nil {
return err
}
_, err = io.Copy(f, file)
if err != nil {
return err
}
return nil
}
for _, path := range tozip {
err = filepath.Walk(path, walker)
if err != nil {
return err
}
}
for _, dir := range tozip {
err = os.RemoveAll(dir)
if err != nil {
return err
}
}
return nil
}