package main

import (
	"io"
	"sort"

	"github.com/go-git/go-git/v5/plumbing/object"
)

type gitFS struct{ *object.Tree }

func (fs gitFS) Open(path string) (r io.ReadCloser, err error) {
	f, err := fs.Tree.File(path)
	if err != nil {
		return
	}
	return f.Reader()
}

func (fs gitFS) List(path string) (entries []string, err error) {
	tree, err := fs.Tree.Tree(path)
	if err != nil {
		return
	}

	entries = make([]string, 0, len(tree.Entries))

	for _, ent := range tree.Entries {
		if !ent.Mode.IsFile() {
			continue
		}

		entries = append(entries, ent.Name)
	}

	sort.Strings(entries)
	return
}
