github.com/geofffranks/garden-linux@v0.0.0-20160715111146-26c893169cfa/linux_backend/rootfs_cleaner.go (about)

     1  package linux_backend
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  
     7  	"code.cloudfoundry.org/lager"
     8  )
     9  
    10  type RootFSCleaner struct {
    11  	FilePaths []string
    12  }
    13  
    14  func (r *RootFSCleaner) Clean(log lager.Logger, path string) error {
    15  	log = log.Session("rootfs-cleaner", lager.Data{"path": path})
    16  
    17  	for _, filePath := range r.FilePaths {
    18  		filePath = filepath.Join(path, filePath)
    19  		fi, err := os.Lstat(filePath)
    20  		if os.IsNotExist(err) {
    21  			continue
    22  		}
    23  
    24  		if fi.Mode()&os.ModeSymlink != 0 {
    25  			err := os.Remove(filePath)
    26  			if err != nil {
    27  				log.Error("symlink-remove-failed", err)
    28  				return err
    29  			}
    30  		}
    31  	}
    32  
    33  	return nil
    34  }