summaryrefslogtreecommitdiff
path: root/teleirc/matterbridge/vendor/github.com/spf13/viper/fs.go
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-11-02 15:27:18 +0800
committerMistivia <i@mistivia.com>2025-11-02 15:27:18 +0800
commite9c24f4af7ed56760f6db7941827d09f6db9020b (patch)
tree62128c43b883ce5e3148113350978755779bb5de /teleirc/matterbridge/vendor/github.com/spf13/viper/fs.go
parent58d5e7cfda4781d8a57ec52aefd02983835c301a (diff)
add matterbridge
Diffstat (limited to 'teleirc/matterbridge/vendor/github.com/spf13/viper/fs.go')
-rw-r--r--teleirc/matterbridge/vendor/github.com/spf13/viper/fs.go65
1 files changed, 65 insertions, 0 deletions
diff --git a/teleirc/matterbridge/vendor/github.com/spf13/viper/fs.go b/teleirc/matterbridge/vendor/github.com/spf13/viper/fs.go
new file mode 100644
index 0000000..ecb1769
--- /dev/null
+++ b/teleirc/matterbridge/vendor/github.com/spf13/viper/fs.go
@@ -0,0 +1,65 @@
+//go:build go1.16 && finder
+// +build go1.16,finder
+
+package viper
+
+import (
+ "errors"
+ "io/fs"
+ "path"
+)
+
+type finder struct {
+ paths []string
+ fileNames []string
+ extensions []string
+
+ withoutExtension bool
+}
+
+func (f finder) Find(fsys fs.FS) (string, error) {
+ for _, searchPath := range f.paths {
+ for _, fileName := range f.fileNames {
+ for _, extension := range f.extensions {
+ filePath := path.Join(searchPath, fileName+"."+extension)
+
+ ok, err := fileExists(fsys, filePath)
+ if err != nil {
+ return "", err
+ }
+
+ if ok {
+ return filePath, nil
+ }
+ }
+
+ if f.withoutExtension {
+ filePath := path.Join(searchPath, fileName)
+
+ ok, err := fileExists(fsys, filePath)
+ if err != nil {
+ return "", err
+ }
+
+ if ok {
+ return filePath, nil
+ }
+ }
+ }
+ }
+
+ return "", nil
+}
+
+func fileExists(fsys fs.FS, filePath string) (bool, error) {
+ fileInfo, err := fs.Stat(fsys, filePath)
+ if err == nil {
+ return !fileInfo.IsDir(), nil
+ }
+
+ if errors.Is(err, fs.ErrNotExist) {
+ return false, nil
+ }
+
+ return false, err
+}