func hash(parts ...string) (string, error) {
	readers := make([]io.Reader, len(parts))
	for i, p := range parts {
		readers[i] = strings.NewReader(p)
	}
	return readerHasher(readers...)
}
hash generates a key based on given strings (ie. filename paths and branch).
package generator
import (
	"fmt"
	"io"
	"strings"
)
type Hash struct {
	defaultParts []string
}
func NewHash(defaultParts ...string) *Hash {
	return &Hash{defaultParts: defaultParts}
}
func (h *Hash) Generate(parts ...string) (string, error) {
	key, err := hash(append(parts, h.defaultParts...)...)
	if err != nil {
		return "", fmt.Errorf("generate hash key for mounted, %w", err)
	}
	return key, nil
}
func (h *Hash) Check() error { return nil }