package fstree import ( "io/fs" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/logger" utilSync "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/sync" "go.uber.org/zap" ) type Option func(*FSTree) func WithDepth(d uint64) Option { return func(f *FSTree) { f.Depth = d } } func WithDirNameLen(l int) Option { return func(f *FSTree) { f.DirNameLen = l } } func WithPerm(p fs.FileMode) Option { return func(f *FSTree) { f.Permissions = p } } func WithPath(p string) Option { return func(f *FSTree) { f.RootPath = p } } func WithNoSync(noSync bool) Option { return func(f *FSTree) { f.noSync = noSync } } func WithMetrics(m Metrics) Option { return func(f *FSTree) { f.metrics = m } } func WithFileCounter(c FileCounter) Option { return func(f *FSTree) { f.fileCounterEnabled = true f.fileCounter = c f.fileGuard = utilSync.NewKeyLocker[string]() } } func WithLogger(l *logger.Logger) Option { return func(f *FSTree) { f.log = &logger.Logger{Logger: l.With(zap.String("component", "FSTree"))} } }