go-zero plugin命令

2022-04-22 10:39 更新

plugin命令

goctl支持針對api自定義插件,那我怎么來自定義一個插件了?來看看下面最終怎么使用的一個例子。

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

上面這個命令可以分解成如下幾步:

  • goctl 解析api文件
  • goctl 將解析后的結(jié)構(gòu) ApiSpec 和參數(shù)傳遞給goctl-android可執(zhí)行文件
  • goctl-android 根據(jù) ApiSpec 結(jié)構(gòu)體自定義生成邏輯。

此命令前面部分 goctl api plugin -p 是固定參數(shù),goctl-android="android -package com.tal" 是plugin參數(shù),其中g(shù)octl-android是插件二進(jìn)制文件,android -package com.tal是插件的自定義參數(shù),-api user.api -dir .是goctl通用自定義參數(shù)。

怎么編寫自定義插件?

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傳遞過來的數(shù)據(jù),里面包含如下部分內(nèi)容:

type Plugin struct {
    Api   *spec.ApiSpec
    Style string
    Dir   string
}
  • Api:定義了api文件的結(jié)構(gòu)數(shù)據(jù)
  • Style:可選參數(shù),可以用來控制文件命名規(guī)范
  • Dir:工作目錄


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號