diff --git a/plugin/example_test.go b/plugin/example_test.go new file mode 100644 index 0000000..80b4758 --- /dev/null +++ b/plugin/example_test.go @@ -0,0 +1,43 @@ +package plugin_test + +import ( + "log" + "os" + + "filippo.io/age" + "filippo.io/age/plugin" +) + +type Recipient struct{} + +func (r *Recipient) Wrap(fileKey []byte) ([]*age.Stanza, error) { + panic("unimplemented") +} + +func NewRecipient(data []byte) (*Recipient, error) { + return &Recipient{}, nil +} + +type Identity struct{} + +func (i *Identity) Unwrap(s []*age.Stanza) ([]byte, error) { + panic("unimplemented") +} + +func NewIdentity(data []byte) (*Identity, error) { + return &Identity{}, nil +} + +func ExamplePlugin_main() { + p, err := plugin.New("example") + if err != nil { + log.Fatal(err) + } + p.HandleRecipient(func(data []byte) (age.Recipient, error) { + return NewRecipient(data) + }) + p.HandleIdentity(func(data []byte) (age.Identity, error) { + return NewIdentity(data) + }) + os.Exit(p.Main()) +} diff --git a/plugin/plugin.go b/plugin/plugin.go index dafd4c7..5259e10 100644 --- a/plugin/plugin.go +++ b/plugin/plugin.go @@ -12,7 +12,6 @@ import ( "filippo.io/age/internal/format" ) -// TODO: add examples. // TODO: add plugin test framework. // Plugin is a framework for writing age plugins. It allows exposing regular