Skip to content

v0.3.6

Latest

Choose a tag to compare

@tlipoca9 tlipoca9 released this 09 Jan 10:12
· 13 commits to main since this release

v0.3.6 Release Notes

新功能

1. Kubernetes 资源验证注解

新增四个 Kubernetes 相关的验证注解,用于验证资源规格和 DNS 名称:

@dns1123_label - DNS 标签验证

验证字符串符合 RFC 1123 DNS 标签规范,适用于 Kubernetes 对象命名。

// validategen:@validate
type KubernetesObject struct {
    // validategen:@required
    // validategen:@dns1123_label
    Namespace string  // "default", "kube-system" ✓

    // validategen:@required
    // validategen:@dns1123_label
    PodName string  // "my-pod-123" ✓, "Pod" ✗, "-invalid" ✗
}

DNS 标签规则:

  • 只能包含小写字母、数字和连字符
  • 必须以字母或数字开头和结尾
  • 每个标签最多 63 个字符

@cpu - CPU 资源验证

验证 Kubernetes CPU 资源数量格式。

// validategen:@validate
type PodSpec struct {
    // validategen:@required
    // validategen:@cpu
    CPURequest string  // "500m", "1", "2" ✓
}

支持的格式: 毫核 (500m)、核数 (1, 0.5)、科学记数法 (1e3m)

@memory - 内存资源验证

验证 Kubernetes 内存资源数量格式。

// validategen:@validate
type PodSpec struct {
    // validategen:@required
    // validategen:@memory
    MemoryRequest string  // "128Mi", "1Gi" ✓
}

支持的格式: 二进制单位 (128Mi, 1Gi)、十进制单位 (128M, 1G)、字节数

@disk - 磁盘资源验证

验证 Kubernetes 存储资源数量格式。

// validategen:@validate
type PersistentVolume struct {
    // validategen:@required
    // validategen:@disk
    StorageRequest string  // "10Gi", "100Gi" ✓
}

2. 字符串枚举别名类型支持

@oneof_enum 现在支持字符串类型的枚举别名:

// enumgen:@enum(string)
type Priority string

const (
    PriorityLow    Priority = "low"
    PriorityMedium Priority = "medium"
    PriorityHigh   Priority = "high"
)

// validategen:@validate
type Task struct {
    // validategen:@oneof_enum(Priority)
    Priority Priority  // 自动验证是否为有效的 Priority 值
}

改进

文档更新

  • 更新 validategen README,添加新注解的详细说明和示例
  • 更新 AI Rules 文档,包含 Kubernetes 资源验证的使用指南

代码清理

  • 移除未使用的函数,减少代码体积
  • 修复 Makefile 中 ginkgo coverprofile 路径问题

升级指南

直接升级即可,无破坏性变更:

go install github.com/tlipoca9/devgen/cmd/devgen@v0.3.6

English