func ZipResource()

in cli/api/catalog/catalog.go [182:217]


func ZipResource(resource string) (*bytes.Buffer, error) {
	buf := new(bytes.Buffer)
	writer := zip.NewWriter(buf)
	defer writer.Close()

	walkFn := func(path string, info os.FileInfo, err error) error {
		if info.IsDir() {
			return nil
		}

		relativePath, err := filepath.Rel(resource, path)
		if err != nil {
			return err
		}
		relativePath = strings.Replace(relativePath, "\\", "/", -1)
		f, err := writer.Create(relativePath)
		if err != nil {
			return err
		}

		fileBytes, err := ioutil.ReadFile(path)
		if err != nil {
			return err
		}

		_, err = f.Write(fileBytes)
		if err != nil {
			return err
		}
		return nil
	}

	err := filepath.Walk(resource, walkFn)

	return buf, err;
}