func (m *InMem) Revisions(context.Context, string) ([]backend.Revision, error) {
	return []backend.Revision{
		{
			Hash: "latest",
			Date: time.Now(),
		}}, nil
}
Revisions is not implemented
package inmem
import (
	"context"
	"fmt"
	"sort"
	"strings"
	"sync"
	"time"
	"github.com/blang/semver/v4"
	"github.com/gopasspw/gopass/internal/backend"
)
type InMem struct {
	sync.Mutex
	data map[string][]byte
}
func New() *InMem {
	return &InMem{
		data: make(map[string][]byte, 10),
	}
}
func (m *InMem) Get(ctx context.Context, name string) ([]byte, error) {
	m.Lock()
	defer m.Unlock()
	sec, found := m.data[name]
	if !found {
		return nil, fmt.Errorf("entry not found")
	}
	return sec, nil
}
func (m *InMem) Set(ctx context.Context, name string, value []byte) error {
	m.Lock()
	defer m.Unlock()
	m.data[name] = value
	return nil
}
func (m *InMem) Delete(ctx context.Context, name string) error {
	m.Lock()
	defer m.Unlock()
	delete(m.data, name)
	return nil
}
func (m *InMem) Exists(ctx context.Context, name string) bool {
	m.Lock()
	defer m.Unlock()
	_, found := m.data[name]
	return found
}
func (m *InMem) List(ctx context.Context, prefix string) ([]string, error) {
	m.Lock()
	defer m.Unlock()
	keys := make([]string, 0, len(m.data))
	for k := range m.data {
		keys = append(keys, k)
	}
	sort.Strings(keys)
	return keys, nil
}
func (m *InMem) IsDir(ctx context.Context, name string) bool {
	m.Lock()
	defer m.Unlock()
	for k := range m.data {
		if strings.HasPrefix(k, name+"/") {
			return true
		}
	}
	return false
}
func (m *InMem) Prune(ctx context.Context, prefix string) error {
	m.Lock()
	defer m.Unlock()
	deleted := 0
	for k := range m.data {
		if strings.HasPrefix(k, prefix+"/") {
			delete(m.data, k)
			deleted++
		}
	}
	if deleted < 1 {
		return fmt.Errorf("not found")
	}
	return nil
}
func (m *InMem) Name() string {
	return "inmem"
}
func (m *InMem) Version(context.Context) semver.Version {
	return semver.Version{Major: 1}
}
func (m *InMem) String() string {
	return "inmem()"
}
func (m *InMem) Path() string {
	return "inmem"
}
func (m *InMem) Fsck(ctx context.Context) error {
	return nil
}
func (m *InMem) Add(ctx context.Context, args ...string) error {
	return nil
}
func (m *InMem) Commit(ctx context.Context, msg string) error {
	return nil
}
func (m *InMem) Push(ctx context.Context, origin, branch string) error {
	return nil
}
func (m *InMem) Pull(ctx context.Context, origin, branch string) error {
	return nil
}
func (m *InMem) Cmd(ctx context.Context, name string, args ...string) error {
	return nil
}
func (m *InMem) Init(context.Context, string, string) error {
	return nil
}
func (m *InMem) InitConfig(context.Context, string, string) error {
	return nil
}
func (m *InMem) AddRemote(ctx context.Context, remote, url string) error {
	return nil
}
func (m *InMem) RemoveRemote(ctx context.Context, remote string) error {
	return nil
}