codecamp

go-zero plugin命令

plugin命令

goctl支持针对api自定义插件,那我怎么来自定义一个插件了?来看看下面最终怎么使用的一个例子。

$ goctl api plugin -p goctl-android="android -package com.tal" -api user.api -dir .

上面这个命令可以分解成如下几步:

  • goctl 解析api文件
  • goctl 将解析后的结构 ApiSpec 和参数传递给goctl-android可执行文件
  • goctl-android 根据 ApiSpec 结构体自定义生成逻辑。

此命令前面部分 goctl api plugin -p 是固定参数,goctl-android="android -package com.tal" 是plugin参数,其中goctl-android是插件二进制文件,android -package com.tal是插件的自定义参数,-api user.api -dir .是goctl通用自定义参数。

怎么编写自定义插件?

go-zero框架中包含了一个很简单的自定义插件 demo,代码如下:

package main

import (
    "fmt"

    "github.com/zeromicro/go-zero/tools/goctl/plugin"
)

func main() {
    plugin, err := plugin.NewPlugin()
    if err != nil {
        panic(err)
    }
    if plugin.Api != nil {
        fmt.Printf("api: %+v \n", plugin.Api)
    }
    fmt.Printf("dir: %s \n", plugin.Dir)
    fmt.Println("Enjoy anything you want.")
}

plugin, err := plugin.NewPlugin() 这行代码作用是解析从goctl传递过来的数据,里面包含如下部分内容:

type Plugin struct {
    Api   *spec.ApiSpec
    Style string
    Dir   string
}
  • Api:定义了api文件的结构数据
  • Style:可选参数,可以用来控制文件命名规范
  • Dir:工作目录


go-zero model命令
go-zero 其他命令
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }