in experimental/repository.go [177:231]
func (r *repositoryData) sweep() error {
for name, t := range r.tags {
err := t.sweep()
if err != nil {
if *softErrors {
logrus.Errorln("SWEEP:", r.name, "TAG:", name, "ERROR:", err)
continue
}
return err
}
}
for revision, used := range r.manifests {
if used > 0 {
continue
}
err := deleteFile(r.manifestRevisionPath(revision), digestReferenceSize)
if err != nil {
if *softErrors {
logrus.Errorln("SWEEP:", r.name, "MANIFEST:", revision, "ERROR:", err)
continue
}
return err
}
}
for revision, signatures := range r.manifestSignatures {
err := r.sweepManifestSignatures(revision, signatures)
if err != nil {
if *softErrors {
logrus.Errorln("MARK:", r.name, "MANIFEST SIGNATURES:", revision, "ERROR:", err)
continue
}
return err
}
}
for digest, used := range r.layers {
if used > 0 {
continue
}
err := deleteFile(r.layerLinkPath(digest), digestReferenceSize)
if err != nil {
if *softErrors {
logrus.Errorln("MARK:", r.name, "LAYER:", digest, "ERROR:", err)
continue
}
return err
}
}
return nil
}