{"id":13757653,"url":"https://github.com/zeromicro/goctl-intellij","last_synced_at":"2025-04-12T13:21:55.546Z","repository":{"id":46577509,"uuid":"321005673","full_name":"zeromicro/goctl-intellij","owner":"zeromicro","description":"A intellij plugin of goctl","archived":false,"fork":false,"pushed_at":"2025-03-24T03:00:07.000Z","size":5961,"stargazers_count":30,"open_issues_count":9,"forks_count":7,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-24T03:32:21.275Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zeromicro.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGE_LOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-12-13T07:09:45.000Z","updated_at":"2025-03-24T03:00:10.000Z","dependencies_parsed_at":"2024-01-17T16:08:22.739Z","dependency_job_id":"7a6c492b-7617-4372-970e-2d77dbc8521f","html_url":"https://github.com/zeromicro/goctl-intellij","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromicro%2Fgoctl-intellij","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromicro%2Fgoctl-intellij/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromicro%2Fgoctl-intellij/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromicro%2Fgoctl-intellij/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zeromicro","download_url":"https://codeload.github.com/zeromicro/goctl-intellij/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248571875,"owners_count":21126531,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T12:00:44.007Z","updated_at":"2025-04-12T13:21:55.525Z","avatar_url":"https://github.com/zeromicro.png","language":"Java","funding_links":[],"categories":["Tools and plugins for [go-zero](https://github.com/tal-tech/go-zero)"],"sub_categories":[],"readme":"# goctl intellij  Plugin\n中文简体 | [English](README_EN.md)\n\n[![go-zero](https://img.shields.io/badge/Github-go--zero-brightgreen?logo=github)](https://github.com/tal-tech/go-zero)\n[![license](https://img.shields.io/badge/License-MIT-blue)](https://github.com/zeromicro/goctl-intellij/blob/main/LICENSE)\n[![license](https://img.shields.io/badge/Release-1.1.0-red)](https://github.com/zeromicro/goctl-intellij/releases)\n\n# 介绍\n一款支持go-zero api语言结构语法高亮、检测以及api、rpc、model快捷生成的插件工具。\n\n\n# idea版本要求\n\n不低于193.0(2019.3)\n\n# 版本特性\n\n* api语法高亮\n* api语法、语义检测\n* struct、route、handler重复定义检测\n* type跳转到类型声明位置\n* 上下文菜单中支持api、rpc、mode相关menu选项\n* 代码格式化(option+command+L)\n* 代码提示\n\n# 安装方式\n\n## 方式一\n在github的release中找到最新的zip包，下载本地安装即可。（无需解压）\n\n## 方式二\n在plugin商店中，搜索`Goctl`安装即可（目前商店中已通过的版本比较低。）\n\n\n# 预览\n![preview](./src/main/resources/static/api_colorful.png)\n\n# 新建 Api file\n\n在工程区域目标文件夹`右键 -\u003e New -\u003e New Api File -\u003e Empty File/Api Template`,如图：\n\n![preview](./src/main/resources/static/api_new.png)\n![preview](./src/main/resources/static/new.png)\n\n# 新建 Proto File\n在工程区目标文件夹`右键 -\u003e New -\u003e New Proto File -\u003e Empty File/Proto Template`,如图：\n![preview](./src/main/resources/static/new_proto.png)\n![preview](./src/main/resources/static/proto.png)\n\n# 快速生成api/rpc服务\n在目标文件夹`右键 -\u003e New -\u003e Go Zero -\u003e Api Greet Service/Rpc Greet Service`\n\n![preview](./src/main/resources/static/service.png)\n\n# Api 代码生成\n## 1. api 文件右键生成\n![preview](./src/main/resources/static/project_api_code_gen.png)\n\n## 2. api 文件编辑区右键生成\n![preview](./src/main/resources/static/editor_api_code_gen.png)\n\n## Api 代码生成说明\n`API Code Generation` 和 `API Quick Code Generation` 的区别是：\n\n- `API Quick Code Generation` 中 `goctl` 的相关指令参数均使用指定值，其代码生成指令内容如下：\n  \n    ```shell\n    $ goctl api go --api=${API 文件路径} --style=gozero --home=\"~/.goctl\" --dir=${API 文件所在文件夹}\n    ```\n- `API Code Generation` 会打开弹窗让使用者填写 `--style`，`-- dir`，`--home` 等信息\n  ![preview](./src/main/resources/static/api_code_gen_dialog.png)\n\n# zRPC 代码生成\n## 1. proto 文件右键生成\n![preview](./src/main/resources/static/project_zrpc_code_gen.png)\n\n## 2. proto 文件编辑区右键生成\n![preview](./src/main/resources/static/editor_zrpc_code_gen.png)\n\n## zRPC 代码生成说明\n`ZRPC Code Generation` 和 `ZRPC Quick Code Generation` 的区别是：\n- `ZRPC Quick Code Generation` 中 `goctl` 的相关指令参数均使用指定值，其代码生成指令内容如下：\n    \n    ```shell\n    $ goctl rpc protoc ${proto 文件路径} --style=gozero --home=\"~/.goctl\" --go_out=${API 文件所在文件夹} --grpc-go_out=${API 文件所在文件夹} --zrpc_out=${API 文件所在文件夹}\n    ```\n- `ZRPC Code Generation` 会打开弹窗让使用者填写 `--style`，`-- dir`，`--home`,`proto_path`(如果有 import 其他 proto 文件) 等信息\n  \n  - 无 import 情况\n    ![preview](./src/main/resources/static/api_code_gen_dialog.png)\n  - 有 import 情况，proto_path 目前只支持但文件选择，因此 **不支持 import 自不同文件夹的 proto**。\n    ![preview](./src/main/resources/static/rpc_code_gen_dialog.png)\n\n# Model 代码生成\n## 1. sql 文件右键生成\n![preview](./src/main/resources/static/project_model_code_gen.png)\n\n## 2. sql 文件编辑区右键生成\n![preview](./src/main/resources/static/editor_model_code_gen.png)\n\n## Model 代码生成说明\n**Model 代码生成默认都是带缓存的。**\n\n`Model Code Generation` 和 `Model Quick Code Generation` 的区别是：\n- `Model Quick Code Generation` 中 `goctl` 的相关指令参数均使用指定值，其代码生成指令内容如下：\n    \n    ```shell\n    $ goctl model mysql ddl --src=${sql 文件路径} --dir=${sql 文件所在文件夹} --style=gozero -c --home=\"~/.goctl\"\n    ```\n- `Model Code Generation` 会打开弹窗让使用者填写 `--style`，`-- dir`，`--home`，`--cache` 等信息\n  ![preview](./src/main/resources/static/api_code_gen_dialog.png)\n- \n# 错误提示\n![context menu](./src/main/resources/static/alert.png)\n\n\n# Live Template\nLive Template可以加快我们对api文件的编写，比如我们在go文件中输入`main`关键字根据tip回车后会插入一段模板代码\n```golang\nfunc main(){\n\n}\n```\n或者说看到下图你会更加熟悉，曾几何时你还在这里定义过template\n![context menu](./src/main/resources/static/go_live_template.png)\n\n下面就进入今天api语法中的模板使用说明吧，我们先来看看service模板的效果\n![context menu](./src/main/resources/static/live_preview.gif)\n\n#### 预设模板及生效区域\n|  模板关键字   | psiTree生效区域 |描述 \n|  ----  | ----  | ----  | \n| @doc  | ApiService |doc注释模板|\n| doc  | ApiService |doc注释模板|\n| struct  | Struct |struct声明模板|\n| info  | ApiFile |info block模板|\n| type  | ApiFile |type group模板|\n| handler  | ApiService |handler文件名模板|\n| get  | ApiService |get方法路由模板|\n| head  | ApiService |head方法路由模板|\n| post  | ApiService |post方法路由模板|\n| put  | ApiService |put方法路由模板|\n| delete  | ApiService |delete方法路由模板|\n| connect  | ApiService |connect方法路由模板|\n| options  | ApiService |options方法路由模板|\n| trace  | ApiService |trace方法路由模板|\n| service  | ApiFile |service服务block模板|\n| json  | Tag|Tag literal |tag模板|\n| xml  | Tag|Tag literal |tag模板|\n| path  | Tag|Tag literal |tag模板|\n| form  | Tag|Tag literal |tag模板|","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeromicro%2Fgoctl-intellij","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzeromicro%2Fgoctl-intellij","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeromicro%2Fgoctl-intellij/lists"}