Перейти к основному содержимому
Version: 3.0.0

Написание плагина

Плагины должны реализовывать интерфейс 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 плагины используют функции как настройки, вы можете описать их в ручную или сгенерировать на основе структуры.

Для генерации опций из структуры :