github.com/argoproj/argo-cd/v3@v3.2.1/util/io/componsablefs.go (about) 1 package io 2 3 import "io/fs" 4 5 type composableFS struct { 6 innerFS []fs.FS 7 } 8 9 // NewComposableFS creates files system that attempts reading file from multiple wrapped file systems 10 func NewComposableFS(innerFS ...fs.FS) *composableFS { 11 return &composableFS{innerFS: innerFS} 12 } 13 14 // Open attempts open file in wrapped file systems and returns first successful 15 func (c composableFS) Open(name string) (f fs.File, err error) { 16 for i := range c.innerFS { 17 f, err = c.innerFS[i].Open(name) 18 if err == nil { 19 break 20 } 21 } 22 return 23 }