diff --git a/.gitignore b/.gitignore index bf870a0..1762b35 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ # Verdex work files -.cache +templates/.cache targets.txt output.json diff --git a/verdex/templates/update_download.go b/verdex/templates/update_download.go index f71dc5f..7dc0461 100644 --- a/verdex/templates/update_download.go +++ b/verdex/templates/update_download.go @@ -100,7 +100,7 @@ func unpackReleaseWithCallback(destDir string, data *bytes.Reader) error { callbackFunc := func(uri string, f fs.FileInfo, r io.Reader) error { uriParts := strings.Split(uri, "/") - // example: verdexlab-verdex-a0b1c2d3/products/keycloak/rules/26.0.5.yml + // example: verdexlab-verdex-a0b1c2d3/templates/keycloak/rules/26.0.5.yml if len(uriParts) < 2 || uriParts[1] != downloadDirectory || f.IsDir() { return nil } @@ -109,15 +109,20 @@ func unpackReleaseWithCallback(destDir string, data *bytes.Reader) error { return nil } - writeFile := strings.Join(uriParts[2:], "-") - writePath := path.Join(destDir, writeFile) + writeDirectory := path.Join(destDir, strings.Join(uriParts[2:len(uriParts)-1], "/")) + writeFilePath := path.Join(writeDirectory, uriParts[len(uriParts)-1]) bin, err := io.ReadAll(r) if err != nil { return fmt.Errorf("failed to read release file %s", uri) } - return os.WriteFile(writePath, bin, f.Mode()) + err = os.MkdirAll(writeDirectory, os.ModePerm) + if err != nil { + return fmt.Errorf("failed to create directory recursively %s", uri) + } + + return os.WriteFile(writeFilePath, bin, f.Mode()) } zipReader, err := zip.NewReader(data, data.Size())