sumwai / wox

Wox is a plugin-based system developed using Golang.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Wox

Wox 是一个插件化系统,它作为插件中心使用。

[toc]

用法

如果你需要使用Wox,首先,你应该引入该程序包

go get github.com/sumwai/wox

然后才可以在程序中使用

package main

import (
    "github.com/sumwai/wox"
)

func main () {
    wox.NewPM().Load("plugins").Run()
}

以上代码将会新建一个PlugManager,并调用Load方法,遍历plugins目录下的所有.so插件,最后使用Run运行所有插件

插件定义

插件的定义需要实现Plug接口

type Plug interface {
    Run() // 入口函数
}

并导出变量Plugin

var Plugin

如果你需要定义你的插件版本,插件名称,可以使用导出变量

var (
    Name = "Plugin Name"
    Description = "Plugin Description"
    Version = "1.0.0"
)

以下是一个简单的插件定义(仅实现Plug接口),该插件每秒在日志中输出一条消息Timer ticker

package main

import (
    "log"
    "time"
)

var (
    Plugin      Timer
    Name        = "Timer"
    Description = "a simple plugin, print 'time ticker' every second"
    Version     = "1.0.0"
)

type (
    Timer struct{}
)

func (t Timer) Run() {
    ticker := time.NewTicker(time.Second)
    for {
        <-ticker.C
        log.Println("time ticker")
    }
}

该插件运行后将会输出

2023/03/06 20:54:30 loaded [Timer] (v 1.0.0) - a simple plugin, print 'time ticker' every second
2023/03/06 20:54:30 run [Timer] (v 1.0.0)
2023/03/06 20:54:31 time ticker
...
...
^Csignal: interrupt

About

Wox is a plugin-based system developed using Golang.


Languages

Language:Go 100.0%