1package root
2
3import (
4	"context"
5
6	"github.com/gopasspw/gopass/internal/backend"
7	"github.com/gopasspw/gopass/pkg/debug"
8)
9
10// Convert will try to convert a given mount to a different set of
11// backends.
12func (r *Store) Convert(ctx context.Context, name string, cryptoBe backend.CryptoBackend, storageBe backend.StorageBackend, move bool) error {
13	sub, err := r.GetSubStore(name)
14	if err != nil {
15		return err
16	}
17	debug.Log("converting %s to crypto: %s, rcs: %s, storage: %s", name, cryptoBe, storageBe)
18	if err := sub.Convert(ctx, cryptoBe, storageBe, move); err != nil {
19		return err
20	}
21	if name == "" {
22		debug.Log("success. updating root path to %s", sub.Path())
23		r.cfg.Path = sub.Path()
24	} else {
25		debug.Log("success. updating path for %s to %s", name, sub.Path())
26		r.cfg.Mounts[name] = sub.Path()
27	}
28
29	return r.cfg.Save()
30}
31