devgen

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 7, 2025 License: MIT

README

devgen

中文 | English

Go 代码生成工具集,通过注解自动生成样板代码,减少手写重复代码的工作量。

安装

# 安装 devgen(包含所有工具)
go install github.com/tlipoca9/devgen/cmd/devgen@latest

# 或单独安装
go install github.com/tlipoca9/devgen/cmd/enumgen@latest
go install github.com/tlipoca9/devgen/cmd/validategen@latest

使用

devgen ./...        # 运行所有生成器
enumgen ./...       # 仅运行枚举生成器
validategen ./...   # 仅运行验证生成器

工具

enumgen - 枚举代码生成器

为 Go 枚举类型自动生成序列化、反序列化和验证方法。

// Status 表示状态
// enumgen:@enum(string, json, sql)
type Status int

const (
    StatusPending Status = iota + 1
    StatusActive
    // enumgen:@enum.name(Cancelled)
    StatusCanceled  // 自定义名称
)

支持的选项

  • string - 生成 String() 方法
  • json - 生成 MarshalJSON() / UnmarshalJSON()
  • text - 生成 MarshalText() / UnmarshalText()
  • sql - 生成 Value() / Scan() 用于数据库操作

生成的辅助方法

  • IsValid() - 验证枚举值是否有效
  • {Type}Enums.List() - 返回所有有效枚举值
  • {Type}Enums.Parse(s) - 从字符串解析枚举
  • {Type}Enums.Name(v) - 获取枚举值的字符串名称

详见 enumgen README


validategen - 验证代码生成器

为 Go 结构体自动生成 Validate() 方法。

// User 用户模型
// validategen:@validate
type User struct {
    // validategen:@required
    // validategen:@min(2)
    // validategen:@max(50)
    Name string

    // validategen:@required
    // validategen:@email
    Email string

    // validategen:@gte(0)
    // validategen:@lte(150)
    Age int

    // validategen:@oneof(admin, user, guest)
    Role string
}

验证注解

类别 注解
必填 @required
范围 @min(n) @max(n) @len(n) @gt(n) @gte(n) @lt(n) @lte(n)
等值 @eq(v) @ne(v) @oneof(a, b, c)
格式 @email @url @uuid @ip @ipv4 @ipv6
字符 @alpha @alphanum @numeric
字符串 @contains(s) @excludes(s) @startswith(s) @endswith(s)
正则 @regex(pattern)
数据格式 @format(json|yaml|toml|csv)
嵌套 @method(MethodName)

高级特性

  • postValidate(errs []string) error 钩子实现自定义验证逻辑

详见 validategen README


vscode-devgen - VSCode 扩展

提供 devgen 注解的编辑器支持:语法高亮、自动补全、参数验证提示。

构建

make build    # 构建所有工具
make test     # 运行测试
make vscode   # 构建 VSCode 扩展

Release Notes

License

MIT

Directories

Path Synopsis
cmd
devgen command
Command devgen is a unified code generator that runs all devgen tools.
Command devgen is a unified code generator that runs all devgen tools.
enumgen command
Command enumgen generates enum helper methods.
Command enumgen generates enum helper methods.
enumgen/generator
Package generator provides enum code generation functionality.
Package generator provides enum code generation functionality.
validategen command
Command validategen generates Validate() methods for structs.
Command validategen generates Validate() methods for structs.
validategen/generator
Package generator provides validation code generation functionality.
Package generator provides validation code generation functionality.
vscgen command
Command vscgen generates VSCode extension configuration from devgen.toml files.
Command vscgen generates VSCode extension configuration from devgen.toml files.
Package genkit provides a framework for building Go code generators, inspired by google.golang.org/protobuf/compiler/protogen and Go's standard toolchain.
Package genkit provides a framework for building Go code generators, inspired by google.golang.org/protobuf/compiler/protogen and Go's standard toolchain.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL