Написание плагина
Плагины должны реализовывать интерфейс swipe.Plugin.
package myplugin
import ( "github.com/swipe-io/swipe/v3/option" "github.com/swipe-io/swipe/v3/swipe")
type Config struct { }
type MyPlugin struct {}
func (p *MyPlugin) ID() string { return "myplugin"}
func (p *MyPlugin) Configure(cfg *Config, module *option.Module, build *option.Build, options map[string]interface{}) []error { return nil}
func (p *MyPlugin) Generators() ([]swipe.Generator, []error) { return nil, nil}
func (p *MyPlugin) Options() []byte { return nil}
#
Регистрация плагинаПлагины должны регистрироваться с помощью swipe.RegisterPlugin. После регистрации их можно включить и использовать в Swipe.
func init() { swipe.RegisterPlugin(&MyPlugin{})}
note
Функция init может быть определена несколько раз в одном пакете.
#
Компиляция Swipe с помощью пользовательских плагиновЧтобы собрать Swipe с пользовательскими плагинами, просто создайте свой собственный main.go с анонимным импортом пакета ваших плагинов.
package main
import ( "github.com/swipe-io/swipe/v3" _ "github.com/your/custom/package")
func main() { v3.Main()}
#
Как сделать#
Настройки плагинаtype MyPluginConfig struct { // ...}
type MyPlugin struct { config MyPluginConfig}
func (p *MyPlugin) Configure(cfg *swipe.Config, module *option.Module, options map[string]interface{}) []error { if err := mapstructure.Decode(options, &p.config); err != nil { return []error{err} } return nil}
note
В методе Configure вы можете сделать проверку опций.
#
Создание настроек плагинаВ Swipe плагины используют функции как настройки, вы можете описать их в ручную или сгенерировать на основе структуры.
Для генерации опций из структуры :