diff --git a/app/handler/manifest.go b/app/handler/manifest.go index ba24469..4a35d16 100644 --- a/app/handler/manifest.go +++ b/app/handler/manifest.go @@ -86,6 +86,7 @@ func (hand *Handler) ManifestExists(rctx *router.Context) { // pushes of at least 4 megabytes. // PUT /v2//manifests/ 201 404 + func (hand *Handler) PutManifest(rctx *router.Context) { hand.DumpHeaders("PutManifest headers", rctx) diff --git a/pkg/auxtool/cleandir.go b/pkg/auxtool/cleandir.go new file mode 100644 index 0000000..a52a410 --- /dev/null +++ b/pkg/auxtool/cleandir.go @@ -0,0 +1,33 @@ +package auxtool + +import ( + "path/filepath" + "os" + "strings" +) + +func CleanDirs(basedir, datadir string) { + separator := string(os.PathSeparator) + + basedir = filepath.Clean(separator + basedir) + datadir = filepath.Clean(separator + datadir) + + items := strings.Split(datadir, separator) + for i := len(items); i > 0; i-- { + p := filepath.Join(items[0:i]...) + p = filepath.Clean(separator + p) + if p == basedir { + break + } + fileInfo, err := os.Stat(p) + if err != nil { + return + } + if fileInfo.IsDir() { + err = os.Remove(p) + if err != nil { + return + } + } + } +}