spluggy : plugins de tempo de compilação para irOrganizando seu código como plugins tem muitos benefícios, o GO oferece excelente suporte para eles. A ressalva (ao lado do inferno da dependência) é que você perde a vantagem fria e binária de Go.
spluggy dá o melhor dos dois mundos: plugins estáticos. Você define seus plugins como sub-pacotes no mesmo pacote. Desde que todos exponham uma função com o mesmo nome, spluggy os descobrirá automaticamente e tornará a função acessível para pacotes externos.
Um aplicativo em funcionamento é, em exemplo, que demonstra como usar spluggy usando go generate . A interface da linha de recomendação é:
Usage: spluggy <flags> <package directory>
With flags:
-func string
The exposed function name
-out string
Output file name (default "plugins.go")
-pkg string
The base package
-v Enable verbose output
Atualmente, spluggy não pode inferir dependências de tipo de estrutura definidas em um map , por exemplo
// spluggy cannot infer that "somepackage" shoud be imported
func Fn ( map [somepackage. SomeStructType ] int ) {
...
}Isso será abordado na próxima versão.
spluggy é uma obra de ❤️ por codoma.tech.