command-runner/internal/fs/default_fs.go (30 lines of code) (raw):
package fs
import (
"io"
"os"
"path/filepath"
"github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing/format/index"
)
// DefaultFs provides a default implementation of the [FileCollectorFS] interface
type DefaultFs struct {
}
// Walk walks the file tree rooted at root, calling fn for each file
func (*DefaultFs) Walk(root string, fn filepath.WalkFunc) error {
return filepath.Walk(root, fn)
}
// OpenGitIndex opens the git index file
func (*DefaultFs) OpenGitIndex(path string) (*index.Index, error) {
r, err := git.PlainOpen(path)
if err != nil {
return nil, err
}
i, err := r.Storer.Index()
if err != nil {
return nil, err
}
return i, nil
}
// Open opens a path
func (*DefaultFs) Open(path string) (io.ReadCloser, error) {
return os.Open(path)
}
// Readlink reads a link at path
func (*DefaultFs) Readlink(path string) (string, error) {
return os.Readlink(path)
}