Path: blob/main/vendor/github.com/spf13/viper/finder.go
2875 views
package viper12import (3"errors"45"github.com/spf13/afero"6)78// WithFinder sets a custom [Finder].9func WithFinder(f Finder) Option {10return optionFunc(func(v *Viper) {11if f == nil {12return13}1415v.finder = f16})17}1819// Finder looks for files and directories in an [afero.Fs] filesystem.20type Finder interface {21Find(fsys afero.Fs) ([]string, error)22}2324// Finders combines multiple finders into one.25func Finders(finders ...Finder) Finder {26return &combinedFinder{finders: finders}27}2829// combinedFinder is a Finder that combines multiple finders.30type combinedFinder struct {31finders []Finder32}3334// Find implements the [Finder] interface.35func (c *combinedFinder) Find(fsys afero.Fs) ([]string, error) {36var results []string37var errs []error3839for _, finder := range c.finders {40if finder == nil {41continue42}4344r, err := finder.Find(fsys)45if err != nil {46errs = append(errs, err)47continue48}4950results = append(results, r...)51}5253return results, errors.Join(errs...)54}555657