goctl intellij Plugin

go-zero license license

Introduction#

A plugin tool that supports go-zero api language structure syntax highlighting, detection, and api, rpc, and model shortcut generation.

idea version requirements#

No less than 193.0 (2019.3)

Version features#

  • api syntax highlighting
  • api syntax, semantic detection
  • struct, route, handler duplicate definition detection
  • type jump to type declaration location
  • context menu support api, rpc, mode related menu options
  • Code formatting (option+command+L)
  • Code hinting

Installation methods#

Way 1#

Find the latest zip package in the github release, download and install it locally. (No need to decompress)

Way 2#

In the plugin store, just search for Goctl and install it (currently the adopted version in the store is relatively low.)

Preview#

preview

New Api file#

In the project area target folder Right click -> New -> New Api File -> Empty File/Api Template, as shown in the figure.

preview preview

New Proto File#

In the project area target folder Right click -> New -> New Proto File -> Empty File/Proto Template, as shown in the figure. preview preview

Quickly generate api/rpc service#

In the target folder Right click -> New -> Go Zero -> Api Greet Service/Rpc Greet Service

preview

Api code generation#

1. api file right click to generate#

preview

2. api file edit area right-click generation#

preview

Api code generation instructions#

The difference between API Code Generation and API Quick Code Generation is that

  • API Code Generation in goctl uses the specified values for the relevant command parameters, and its code generation instructions read as follows
    $ goctl api go --api=${API file path} --style=gozero --home="~/.goctl" --dir=${API file folder}
  • API Quick Code Generation will open a popup for the user to fill in --style, -- dir, --home, etc. preview

zRPC code generation#

1. proto file right click generation#

preview

2. proto file edit area right-click generation#

preview

zRPC Code Generation Instructions#

The difference between ZRPC Code Generation and ZRPC Quick Code Generation is that

  • ZRPC Code Generation uses the specified values for the relevant command parameters of goctl, and its code generation instructions read as follows
    $ goctl rpc protoc ${proto file path} --style=gozero --home="~/.goctl" --go_out=${API file folder} --grpc-go_out=${API file folder} --zrpc_out=${API file folder }
  • ZRPC Quick Code Generation will open a popup window for users to fill in --style, -- dir, --home, proto_path (if there are other proto files imported), etc.
    • No import case preview
    • With import, proto_path currently only supports but file selection, so importing proto from a different folder is not supported. preview

Model code generation#

1. sql file right click generation#

preview

2. sql file edit area right-click generation#

preview

Model code generation instructions#

Model code generation is cached by default.

The difference between Model Code Generation and Model Quick Code Generation is that

  • Model Code Generation uses the specified values for the goctl command parameters, and the code generation commands are as follows
    $ goctl model mysql ddl --src=${sql file path} --dir=${sql file folder} --style=gozero -c --home="~/.goctl"
  • Model Quick Code Generation will open a popup for the user to fill in --style, -- dir, --home, --cache, etc. preview

Error message#

context menu

Live Template#

Live Template can speed up the writing of api files, for example, if we type main keyword in a go file and enter it according to tip, a template code will be inserted

func main(){
}

Or maybe you'll be more familiar with the following image, where you defined the template once upon a time context menu

Let's get into the template usage instructions in today's api syntax, and let's see the effect of the service template context menu

Preset templates and effective areas#

Template keywordspsiTree effect areadescription
@docApiServicedoc annotation template
docApiServicedoc annotation template
structstructstruct declaration template
infoApiFileinfo block template
typeApiFiletype group template
handlerApiServicehandler filename template
getApiServiceget method routing template
headApiServicehead method routing template
postApiServicepost method routing template
putApiServiceput method routing template
deleteApiServicedelete method routing template
connectApiServiceconnect method routing template
optionsApiServiceoptions method routing template
traceApiServicetrace method routing template
serviceApiFileservice service block template
jsonTagTag literal
xmlTagTag literal
pathTagTag literal
formTagTag literal

About each template corresponding content can be seen in Goland(mac Os)->Preference->Editor->Live Templates-> Api|Api Tags in the detailed template content, such as json tag template content for

Last updated on