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  }