gopasspw--gopass
58 行
1.3 KiB
Go
58 行
1.3 KiB
Go
package gitfs
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"path/filepath"
|
|
|
|
"github.com/gopasspw/gopass/internal/backend"
|
|
"github.com/gopasspw/gopass/pkg/fsutil"
|
|
"github.com/gopasspw/gopass/pkg/termio"
|
|
)
|
|
|
|
const (
|
|
name = "gitfs"
|
|
)
|
|
|
|
func init() {
|
|
backend.StorageRegistry.Register(backend.GitFS, name, &loader{})
|
|
}
|
|
|
|
type loader struct{}
|
|
|
|
func (l loader) New(ctx context.Context, path string) (backend.Storage, error) {
|
|
return New(path)
|
|
}
|
|
|
|
// Open implements backend.RCSLoader.
|
|
func (l loader) Open(ctx context.Context, path string) (backend.Storage, error) {
|
|
return New(path)
|
|
}
|
|
|
|
// Clone implements backend.RCSLoader.
|
|
func (l loader) Clone(ctx context.Context, repo, path string) (backend.Storage, error) {
|
|
return Clone(ctx, repo, path, termio.DetectName(ctx, nil), termio.DetectEmail(ctx, nil))
|
|
}
|
|
|
|
// Init implements backend.RCSLoader.
|
|
func (l loader) Init(ctx context.Context, path string) (backend.Storage, error) {
|
|
return Init(ctx, path, termio.DetectName(ctx, nil), termio.DetectEmail(ctx, nil))
|
|
}
|
|
|
|
func (l loader) Handles(ctx context.Context, path string) error {
|
|
path = fsutil.ExpandHomedir(path)
|
|
if !fsutil.IsDir(filepath.Join(path, ".git")) {
|
|
return fmt.Errorf("no .git at %s", path)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (l loader) Priority() int {
|
|
return 11
|
|
}
|
|
|
|
func (l loader) String() string {
|
|
return name
|
|
}
|