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 }