backend

package
v1.9.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 13, 2020 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// ErrNotFound is returned if the requested backend was not found.
	ErrNotFound = fmt.Errorf("backend not found")
)

Functions

func CryptoBackendName

func CryptoBackendName(cb CryptoBackend) string

CryptoBackendName returns the name of the given backend

func CryptoBackends added in v1.8.4

func CryptoBackends() []string

CryptoBackends returns the list of registered crypto backends.

func HasCryptoBackend

func HasCryptoBackend(ctx context.Context) bool

HasCryptoBackend returns true if a value for crypto backend has been set in the context

func HasRCSBackend

func HasRCSBackend(ctx context.Context) bool

HasRCSBackend returns true if a value for sync backend has been set in the context

func HasStorageBackend

func HasStorageBackend(ctx context.Context) bool

HasStorageBackend returns true if a value for store backend was set

func RCSBackendName

func RCSBackendName(sb RCSBackend) string

RCSBackendName returns the name of the given backend

func RCSBackends added in v1.8.4

func RCSBackends() []string

RCSBackends returns the list of registered RCS backends.

func RegisterCrypto added in v1.8.4

func RegisterCrypto(id CryptoBackend, name string, loader CryptoLoader)

RegisterCrypto registers a new crypto backend with the backend registry.

func RegisterRCS added in v1.8.4

func RegisterRCS(id RCSBackend, name string, loader RCSLoader)

RegisterRCS registers a new RCS backend with the backend registry.

func RegisterStorage added in v1.8.4

func RegisterStorage(id StorageBackend, name string, loader StorageLoader)

RegisterStorage registers a new storage backend with the registry.

func StorageBackendName

func StorageBackendName(sb StorageBackend) string

StorageBackendName returns the name of the given backend

func StorageBackends added in v1.8.4

func StorageBackends() []string

StorageBackends returns the list of registered storage backends.

func WithCryptoBackend

func WithCryptoBackend(ctx context.Context, be CryptoBackend) context.Context

WithCryptoBackend returns a context with the given crypto backend set

func WithCryptoBackendString

func WithCryptoBackendString(ctx context.Context, be string) context.Context

WithCryptoBackendString returns a context with the given crypto backend set

func WithRCSBackend

func WithRCSBackend(ctx context.Context, sb RCSBackend) context.Context

WithRCSBackend returns a context with the given sync backend set

func WithRCSBackendString

func WithRCSBackendString(ctx context.Context, sb string) context.Context

WithRCSBackendString returns a context with the given sync backend set

func WithStorageBackend

func WithStorageBackend(ctx context.Context, sb StorageBackend) context.Context

WithStorageBackend returns a context with the given store backend set

func WithStorageBackendString

func WithStorageBackendString(ctx context.Context, sb string) context.Context

WithStorageBackendString returns a context with the given store backend set

Types

type Crypto

type Crypto interface {
	Keyring

	Encrypt(ctx context.Context, plaintext []byte, recipients []string) ([]byte, error)
	Decrypt(ctx context.Context, ciphertext []byte) ([]byte, error)
	RecipientIDs(ctx context.Context, ciphertext []byte) ([]string, error)

	Name() string
	Version(context.Context) semver.Version
	Initialized(ctx context.Context) error
	Ext() string    // filename extension
	IDFile() string // recipient IDs
}

Crypto is a crypto backend

func NewCrypto added in v1.8.4

func NewCrypto(ctx context.Context, id CryptoBackend) (Crypto, error)

NewCrypto instantiates a new crypto backend.

type CryptoBackend

type CryptoBackend int

CryptoBackend is a cryptographic backend

const (
	// Plain is a no-op crypto backend
	Plain CryptoBackend = iota
	// GPGCLI is a gpg-cli based crypto backend
	GPGCLI
	// XC is an experimental crypto backend
	XC
	// Age - age-encryption.org
	Age
)

func GetCryptoBackend

func GetCryptoBackend(ctx context.Context) CryptoBackend

GetCryptoBackend returns the selected crypto backend or the default (GPGCLI)

func (CryptoBackend) String

func (c CryptoBackend) String() string

type CryptoLoader added in v1.8.4

type CryptoLoader interface {
	fmt.Stringer
	New(context.Context) (Crypto, error)
}

CryptoLoader is the interface for creating a new crypto backend.

type Keyring

type Keyring interface {
	ImportPublicKey(ctx context.Context, key []byte) error
	ExportPublicKey(ctx context.Context, id string) ([]byte, error)

	ListPublicKeyIDs(ctx context.Context) ([]string, error)
	ListPrivateKeyIDs(ctx context.Context) ([]string, error)

	FindPublicKeys(ctx context.Context, needles ...string) ([]string, error)
	FindPrivateKeys(ctx context.Context, needles ...string) ([]string, error)

	FormatKey(ctx context.Context, id string) string
	NameFromKey(ctx context.Context, id string) string
	EmailFromKey(ctx context.Context, id string) string
	Fingerprint(ctx context.Context, id string) string
	ReadNamesFromKey(ctx context.Context, buf []byte) ([]string, error)

	CreatePrivateKeyBatch(ctx context.Context, name, email, passphrase string) error
	CreatePrivateKey(ctx context.Context) error
}

Keyring is a public/private key manager

type RCS

type RCS interface {
	Add(ctx context.Context, args ...string) error
	Commit(ctx context.Context, msg string) error
	Push(ctx context.Context, remote, location string) error
	Pull(ctx context.Context, remote, location string) error

	Name() string
	Version(ctx context.Context) semver.Version

	InitConfig(ctx context.Context, name, email string) error
	AddRemote(ctx context.Context, remote, location string) error
	RemoveRemote(ctx context.Context, remote string) error

	Revisions(ctx context.Context, name string) ([]Revision, error)
	GetRevision(ctx context.Context, name, revision string) ([]byte, error)

	Status(ctx context.Context) ([]byte, error)
}

RCS is a revision control backend

func CloneRCS added in v1.8.4

func CloneRCS(ctx context.Context, id RCSBackend, repo, path string) (RCS, error)

CloneRCS clones an existing repository from a remote.

func InitRCS added in v1.8.4

func InitRCS(ctx context.Context, id RCSBackend, path, name, email string) (RCS, error)

InitRCS initializes a new repository.

func OpenRCS added in v1.8.4

func OpenRCS(ctx context.Context, id RCSBackend, path string) (RCS, error)

OpenRCS opens an existing repository.

type RCSBackend

type RCSBackend int

RCSBackend is a remote-sync backend

const (
	// Noop is a no-op mock backend
	Noop RCSBackend = iota
	// GitCLI is a git-cli based sync backend
	GitCLI
)

func GetRCSBackend

func GetRCSBackend(ctx context.Context) RCSBackend

GetRCSBackend returns the sync backend or the default (Git Mock)

func (RCSBackend) String

func (s RCSBackend) String() string

type RCSLoader added in v1.8.4

type RCSLoader interface {
	fmt.Stringer
	Open(context.Context, string) (RCS, error)
	Clone(context.Context, string, string) (RCS, error)
	Init(context.Context, string, string, string) (RCS, error)
}

RCSLoader is the interface for creating a new RCS backend.

type Revision

type Revision struct {
	Hash        string
	AuthorName  string
	AuthorEmail string
	Date        time.Time
	Subject     string
	Body        string
}

Revision is a SCM revision

type Storage

type Storage interface {
	fmt.Stringer
	Get(ctx context.Context, name string) ([]byte, error)
	Set(ctx context.Context, name string, value []byte) error
	Delete(ctx context.Context, name string) error
	Exists(ctx context.Context, name string) bool
	List(ctx context.Context, prefix string) ([]string, error)
	IsDir(ctx context.Context, name string) bool
	Prune(ctx context.Context, prefix string) error
	Available(ctx context.Context) error

	Name() string
	Version(context.Context) semver.Version
	Fsck(context.Context) error
}

Storage is an storage backend

func NewStorage added in v1.8.4

func NewStorage(ctx context.Context, id StorageBackend, url *URL) (Storage, error)

NewStorage initializes a new storage backend.

type StorageBackend

type StorageBackend int

StorageBackend is a type of storage backend

const (
	// FS is a filesystem-backend storage
	FS StorageBackend = iota
	// InMem is an in-memory mock store for tests
	InMem
)

func GetStorageBackend

func GetStorageBackend(ctx context.Context) StorageBackend

GetStorageBackend returns the store backend or the default (FS)

func (StorageBackend) String

func (s StorageBackend) String() string

type StorageLoader added in v1.8.4

type StorageLoader interface {
	fmt.Stringer
	New(context.Context, *URL) (Storage, error)
}

StorageLoader is the interface for creating a new storage backend.

type URL

type URL struct {
	Crypto   CryptoBackend
	RCS      RCSBackend
	Storage  StorageBackend
	Scheme   string
	Host     string
	Port     string
	Path     string
	Username string
	Password string
	Query    url.Values
	// contains filtered or unexported fields
}

URL is a parsed backend URL

func FromPath

func FromPath(path string) *URL

FromPath returns a new backend URL with the given path and default backends (GitCLI, GPGCLI, FS)

func ParseURL

func ParseURL(us string) (*URL, error)

ParseURL attempts to parse an backend URL

func (*URL) MarshalYAML

func (u *URL) MarshalYAML() (interface{}, error)

MarshalYAML implements yaml.Marshaler

func (*URL) String

func (u *URL) String() string

String implements fmt.Stringer

func (*URL) UnmarshalYAML

func (u *URL) UnmarshalYAML(umf func(interface{}) error) error

UnmarshalYAML implements yaml.Unmarshaler

Directories

Path Synopsis
age
gpg
xc
rcs
fs

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL