WIP: extension feature

This commit is contained in:
2020-11-17 09:19:15 +01:00
parent fe90d81b5d
commit 8b85f60e63
9 changed files with 179 additions and 0 deletions

1
example/extendable/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/bin

View File

@ -0,0 +1,11 @@
build: extension
go build -o ./bin/app ./
extension:
go build -o ./bin/myext.so -buildmode=plugin ./myext
watch:
modd
run:
./bin/app

View File

@ -0,0 +1,23 @@
package main
import (
"context"
"log"
"github.com/pkg/errors"
"gitlab.com/wpetit/goweb/extension"
)
func main() {
reg := extension.NewRegistry()
ctx := context.Background()
extensions, err := reg.LoadAll(ctx, "./bin/*.so")
if err != nil {
log.Fatal(errors.WithStack(err))
}
for _, ext := range extensions {
log.Printf("Loaded extension '%s', version '%s'", ext.ExtensionName(), ext.ExtensionVersion())
}
}

View File

@ -0,0 +1,6 @@
**/*.go
modd.conf
Makefile {
prep: make build
prep: make run
}

View File

@ -0,0 +1,12 @@
package main
type MyExtension struct {
}
func (e *MyExtension) ExtensionName() string {
return "my.extension"
}
func (e *MyExtension) ExtensionVersion() string {
return "0.0.0"
}

View File

@ -0,0 +1,11 @@
package main
import (
"context"
"gitlab.com/wpetit/goweb/extension"
)
func RegisterExtension(ctx context.Context) (extension.Extension, error) {
return &MyExtension{}, nil
}