go工具集合;语法分析,静态解析;生成orm, 根据数据表生成curd, 生成依赖注入, proto自定义tag, 根据go源码解析生成文档
Go to file
2024-04-12 15:54:05 +08:00
config feat: 表关联 2022-10-26 15:22:09 +08:00
console add: 加速扫描过滤的目录 2024-04-12 15:54:05 +08:00
parser add: 加速扫描过滤的目录 2024-04-12 15:54:05 +08:00
.gitignore add: 说明 2023-10-19 18:00:40 +08:00
go.mod fixed: swagger required 2023-01-17 09:20:15 +08:00
go.sum fixed: swagger required 2023-01-17 09:20:15 +08:00
LICENSE Initial commit 2022-01-17 20:19:40 +08:00
main.go bean + mysql orm 2022-03-29 15:20:24 +08:00
Makefile add: 生成的文件尽量保持一致 2023-11-08 15:11:40 +08:00
README.md 1. 新增生成ts工具make:ts 2023-12-14 15:35:24 +08:00
show.gif show.gif 2022-05-09 15:17:27 +08:00

toolset 一个go项目工具集合

  1. 有 go 环境安装
go install github.com/go-home-admin/toolset@latest
  1. 直接 下载 二进制文件, 放到任意 path 包含的路径下

展示

image

帮助命令

user@macOs path $ toolset
Usage:
  command [options] [arguments] [has]
Base Options:
  -debug                 是否显示明细
  -root                  获取项目跟路径, 默认当前目录
  -h                     显示帮助信息
Available commands:
  help          帮助命令
  make          执行所有make命令, 默认参数
  make:bean     生成依赖注入的声明源代码文件, 使用@Bean注解, 和inject引入
  make:curd     生成curd基础代码, 默认使用交互输入, 便捷调用 
  make:grpc     根据protoc文件定义, 生成路grpc基础文件
  make:js       根据swagger生成js请求文件
  make:mongo    根据proto文件, 生成mongodb的orm源码
  make:orm      根据配置文件连接数据库, 生成orm源码
  make:protoc   组装和执行protoc命令
  make:route    根据protoc文件定义, 生成路由信息和控制器文件
  make:swagger  生成文档

生成ORM

# ./config/database.yaml
connections:
  mysql:
    driver: mysql
    host: env("DB_HOST", "127.0.0.1")
    port: env("DB_PORT", "3306")
    database: env("DB_DATABASE", "home-mysql")
    username: env("DB_USERNAME", "root")
    password: env("DB_PASSWORD", "123456")
user@macOs path $ toolset make:orm -config=./config/database.yaml -out=your_path

使用, 基本上和php laravel 很类似, 如果不使用整套的home代码, 应该在生成目录下编写新的NewOrmUsers函数

orm := NewOrmUsers()
user, has := orm.WhereId(1).First()
users, count := orm.WhereNickname("demo").Limit(15).Get()
fmt.Println(user, has, users, count)

生成依赖注入_

这里的原始有点像 wire 库, 但是不需要额外声明文件和关系, 而是使用通俗约定地生成源码,具体可以查看生成的文件z_inject_gen.go

// Kernel @Bean
type Kernel struct {
	httpServer *services.HttpServer `inject:""`
	config     *services.Config     `inject:"config, app"`
}

进入目录获取传入 scan=./path; 执行命令

user@macOs path $ toolset make:bean

具体命令提示

user@macOs path $ toolset make:bean -h
Usage:
  make:bean
    -name                = New{name}
    -scan                = @root
    -skip                = @root/generate
Arguments:
Option:
  -name                  New函数别名, 如果兼容旧的项目可以设置
  -scan                  扫码目录下的源码; shell(pwd)
  -skip                  跳过目录
  -debug                 是否显示明细
  -root                  获取项目跟路径, 默认当前目录
  -h                     显示帮助信息
Has:
  -f                     强制更新
Description:
   生成依赖注入的声明源代码文件, 使用@Bean注解, 和inject引入

数据库注释使用

  1. 使用注释@type(int), 强制设置生成的go struct 属性 类型
  2. 使用注释@index, 强制生成索引赋值函数

生成文档

定义方式

service Controller {
    // 发送通知文档, 不用请求
    rpc Api(ApiRequest)returns(ApiResponse){
        option (http.Post) = "/test";
        // 没有权限
        option (http.Status) = {Code: 401,Response: "TResponse"};
        // test
        option (http.Status) = {Code: 402,Response: "TTResponse"};
        // test
        option (http.Status) = {Code: 403,Response: "TTTResponse"};
    }
}
message TResponse {}

生成 js 接口结构文件

user@macOs toolset % toolset make:js -h  
Usage:
  make:js
    -in                  = @root/web/swagger.json
    -out                 = @root/resources/src/api/swagger_gen.js
Arguments:
Option:
  -in                    swagger.json路径, 可本地可远程
  -out                   js文件输出路径
  -tag                   只生成指定tag的请求
  -debug                 是否显示明细
  -root                  获取项目跟路径, 默认当前目录  
  -http_from             指定import的http函数位置
  -info_tags             指定注释中的tag显示于接口说明
  -h                     显示帮助信息
Has:
Description:
   根据swagger生成js请求文件

生成 ts 接口结构文件

比js更完整每个参数带有注释同时生成枚举对象

user@macOs toolset % toolset make:ts -h  
Usage:
  make:js
    -in                  = @root/web/swagger.json
    -out                 = @root/resources/src/api/swagger_gen.ts
Arguments:
Option:
  -in                    swagger.json路径, 可本地可远程
  -out                   ts文件输出路径
  -tag                   只生成指定tag的请求
  -debug                 是否显示明细
  -root                  获取项目跟路径, 默认当前目录  
  -http_from             指定import的http函数位置
  -info_tags             指定注释中的tag显示于接口说明
  -h                     显示帮助信息
Has:
Description:
   根据swagger生成ts请求文件