plugin

package
v0.0.0-...-6f3f36d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2019 License: Apache-2.0 Imports: 8 Imported by: 0

README

Plugin

每一个插件都提供了一些能力,对于不同的 repo 可以启用不同的插件,并且设置不同的参数。

目前支持的插件及说明文档:

配置说明

插件的配置分为三个部分,示例格式如下:

{
    "plugins": {
        "status": {
            "enable": true,
            "preconditions": [],
            "extra": {}
        }
    }
}

enable

只在为 true 时启用。

preconditions

前置条件,只有满足前置条件,才会继续执行后续的操作,否则不做任何操作。

格式为一个 precondition 的数组,数组中的多个 precondition 是或的关系,满足其中一个就算满足,同一个 precondition 的条件是与的关系,需要所有条件都满足才算满足。

示例:

{
    "is_author": false,
    "required_roles": [],
    "required_labels": [],
    "required_label_prefix": [],
    "match_labels": [
        {
            "base_prefix": "module",
            "target_prefix": "approve"
        }
    ]
}
  • is_author: comment 的 user 是 author 自己。
  • required_roles: 要求 issue 或 PR 或 comment 的 author 需要是某些指定的角色。
  • required_labels: 要求 issue 或 PR 含有指定的 label。
  • required_label_prefix: 要求 issue 或 PR 含有指定前缀的 label。
  • match_labels: 要求 issue 或 PR 中所有的 module/ 为前缀的 label 都有对应的以 approve/ 为前缀的 label。

extra

插件所需的额外配置,每个插件可以不同,不需要则不用配置。

具体某个插件有哪些额外配置详见插件的文档。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Register

func Register(name string, fn CreatorFn)

Types

type BasePlugin

type BasePlugin struct {
	// contains filtered or unexported fields
}

func NewBasePlugin

func NewBasePlugin(name string, options PluginOptions) *BasePlugin

func (*BasePlugin) CheckIsAuthor

func (p *BasePlugin) CheckIsAuthor(ctx *event.EventContext) error

func (*BasePlugin) CheckMatchLabels

func (p *BasePlugin) CheckMatchLabels(ctx *event.EventContext, matchLabels []config.MatchLabel) error

func (*BasePlugin) CheckPluginPreconditions

func (p *BasePlugin) CheckPluginPreconditions(ctx *event.EventContext) (err error)

func (*BasePlugin) CheckPrecondition

func (p *BasePlugin) CheckPrecondition(ctx *event.EventContext, precondition config.Precondition) (err error)

func (*BasePlugin) CheckPreconditions

func (p *BasePlugin) CheckPreconditions(ctx *event.EventContext, preconditions []config.Precondition) (err error)

func (*BasePlugin) CheckRequiredLabelPrefix

func (p *BasePlugin) CheckRequiredLabelPrefix(ctx *event.EventContext, prefix []string) error

func (*BasePlugin) CheckRequiredLabels

func (p *BasePlugin) CheckRequiredLabels(ctx *event.EventContext, labels []string) error

func (*BasePlugin) CheckRequiredRoles

func (p *BasePlugin) CheckRequiredRoles(ctx *event.EventContext, roles []string) error

func (*BasePlugin) GetAlias

func (p *BasePlugin) GetAlias() config.AliasOptions

func (*BasePlugin) GetExtra

func (p *BasePlugin) GetExtra() interface{}

func (*BasePlugin) GetLabelRoles

func (p *BasePlugin) GetLabelRoles() config.LabelRoles

func (*BasePlugin) GetOwner

func (p *BasePlugin) GetOwner() string

func (*BasePlugin) GetPreconditions

func (p *BasePlugin) GetPreconditions() []config.Precondition

func (*BasePlugin) GetRepo

func (p *BasePlugin) GetRepo() string

func (*BasePlugin) GetRoles

func (p *BasePlugin) GetRoles() config.RoleOptions

func (*BasePlugin) HandleEvent

func (p *BasePlugin) HandleEvent(ctx *event.EventContext) (notSupport bool, err error)

func (*BasePlugin) IsSpecifiedRoles

func (p *BasePlugin) IsSpecifiedRoles(user string, roles []string) bool

func (*BasePlugin) IsSupported

func (p *BasePlugin) IsSupported(ctx *event.EventContext, handlerOptions HandlerOptions) bool

func (*BasePlugin) IsSupportedAction

func (p *BasePlugin) IsSupportedAction(action string, handlerOptions HandlerOptions) bool

func (*BasePlugin) IsSupportedEvent

func (p *BasePlugin) IsSupportedEvent(eventType string, handlerOptions HandlerOptions) bool

func (*BasePlugin) Name

func (p *BasePlugin) Name() string

func (*BasePlugin) ParseCmdAlias

func (p *BasePlugin) ParseCmdAlias(str string) string

func (*BasePlugin) ParseCmdsFromMsg

func (p *BasePlugin) ParseCmdsFromMsg(msg string, onlyOneArg bool) []*Command

func (*BasePlugin) ParseLabelAlias

func (p *BasePlugin) ParseLabelAlias(str string) string

func (*BasePlugin) ParseUserAlias

func (p *BasePlugin) ParseUserAlias(str string) string

func (*BasePlugin) UnmarshalTo

func (p *BasePlugin) UnmarshalTo(v interface{}) error

type Command

type Command struct {
	Name string
	Args []string
}

type CreatorFn

type CreatorFn func(cli client.ClientInterface, notifier notify.NotifyInterface, options PluginOptions) (Plugin, error)

type Handler

type Handler func(ctx *event.EventContext) (err error)

type HandlerOptions

type HandlerOptions struct {
	Events           []string
	Actions          []string // empty means support all
	ObjectNeedParams []int
	Handler          Handler
}

type Plugin

type Plugin interface {
	Name() string
	HandleEvent(ctx *event.EventContext) (notSupport bool, err error)
}

func Create

func Create(cli client.ClientInterface, notifier notify.NotifyInterface, name string, options PluginOptions) (p Plugin, err error)

type PluginOptions

type PluginOptions struct {
	Owner         string
	Repo          string
	Alias         config.AliasOptions
	Roles         config.RoleOptions
	LabelRoles    config.LabelRoles
	Preconditions []config.Precondition
	Extra         interface{}

	// filled by plugin
	Handlers []HandlerOptions
}

func (*PluginOptions) Complete

func (options *PluginOptions) Complete(owner, repo string, alias config.AliasOptions,
	roles config.RoleOptions, labelRoles config.LabelRoles, preconditions []config.Precondition, extra interface{})

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL