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

    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

              func RCSBackends() []string

                RCSBackends returns the list of registered RCS backends.

                func RegisterCrypto

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

                  RegisterCrypto registers a new crypto backend with the backend registry.

                  func RegisterRCS

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

                    RegisterRCS registers a new RCS backend with the backend registry.

                    func RegisterStorage

                    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

                        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

                                        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
                                            	// OpenPGP is a GPG1.x compatible pure-Go crypto backend
                                            	OpenPGP
                                            	// Vault is Hashicorp Vault backend
                                            	Vault
                                            )

                                            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

                                              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)
                                                  }

                                                    RCS is a revision control backend

                                                    func CloneRCS

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

                                                      CloneRCS clones an existing repository from a remote.

                                                      func InitRCS

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

                                                        InitRCS initializes a new repository.

                                                        func OpenRCS

                                                        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
                                                            	// GoGit is an src-d/go-git.v4 based sync backend
                                                            	GoGit
                                                            )

                                                            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

                                                              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

                                                                    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
                                                                        	// Consul is a consul backend storage
                                                                        	Consul
                                                                        )

                                                                        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

                                                                          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
                                                                                        gpg
                                                                                        xc
                                                                                        xc/xcpb
                                                                                        Package xcpb is a generated protocol buffer package.
                                                                                        Package xcpb is a generated protocol buffer package.
                                                                                        rcs
                                                                                        fs