github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/sub/scanner/walk.go (about)

     1  package scanner
     2  
     3  import (
     4  	"github.com/Cloud-Foundations/Dominator/lib/filesystem/scanner"
     5  	"github.com/Cloud-Foundations/Dominator/lib/objectcache"
     6  )
     7  
     8  func scanFileSystem(rootDirectoryName string, cacheDirectoryName string,
     9  	configuration *Configuration, oldFS *FileSystem) (*FileSystem, error) {
    10  	var fileSystem FileSystem
    11  	fileSystem.configuration = configuration
    12  	fileSystem.rootDirectoryName = rootDirectoryName
    13  	fileSystem.cacheDirectoryName = cacheDirectoryName
    14  	hasher := scanner.GetSimpleHasher(true)
    15  	if configuration.CpuLimiter != nil {
    16  		hasher = scanner.NewCpuLimitedHasher(configuration.CpuLimiter, hasher)
    17  	}
    18  	fs, err := scanner.ScanFileSystem(rootDirectoryName,
    19  		configuration.FsScanContext, configuration.ScanFilter,
    20  		checkScanDisableRequest, hasher, &oldFS.FileSystem)
    21  	if err != nil {
    22  		return nil, err
    23  	}
    24  	fileSystem.FileSystem = *fs
    25  	if err = fileSystem.scanObjectCache(); err != nil {
    26  		return nil, err
    27  	}
    28  	return &fileSystem, nil
    29  }
    30  
    31  func (fs *FileSystem) scanObjectCache() error {
    32  	if fs.cacheDirectoryName == "" {
    33  		return nil
    34  	}
    35  	var err error
    36  	fs.ObjectCache, err = objectcache.ScanObjectCache(fs.cacheDirectoryName)
    37  	return err
    38  }