Skip to content

常量代码生成器 (Constants Code Generator):一个强大的多语言常量代码生成工具,支持从XML配置文件生成Python、Go、Java、Swift、Kotlin等语言的常量定义代码。

Notifications You must be signed in to change notification settings

jayscoder/cons-coder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ConsCoder - 常量代码生成器

ConsCoder 是一个跨语言的常量代码生成工具,可以从 YAML 配置文件批量生成多种编程语言的常量定义代码。

特性

  • 📝 YAML 配置驱动:使用简单的 YAML 格式定义常量
  • 🚀 多语言支持:支持 Python、Go、Java、Swift、Kotlin、TypeScript、JavaScript
  • 🎯 双模式生成
    • class 模式:生成面向对象的类结构,支持反向查找
    • const 模式:生成简单的常量定义
  • 📦 批量处理:自动扫描目录下所有 YAML 文件并批量生成
  • 🔧 灵活配置:支持自定义包名、头部注释等

安装

从源码构建

# 克隆仓库
git clone https://github.com/yourusername/cons-coder.git
cd cons-coder

# 安装依赖
go mod download

# 构建二进制文件
./build.sh

# 安装到系统路径(可选)
sudo ./install.sh

使用 Go Install

go install github.com/yourusername/cons-coder@latest

使用方法

命令行参数

cons-coder --dir <YAML目录> --output <输出目录> --lang <语言> [选项]

必填参数

  • -d, --dir:YAML 配置文件目录
  • -o, --output:生成代码的输出目录
  • -l, --lang:目标编程语言 (python/go/java/swift/kotlin/typescript/javascript)

可选参数

  • -m, --mode:生成模式 (class/const),默认为 class
  • -p, --package:包名(Go/Java/Kotlin 语言使用)
  • --header:自定义头部注释,默认为 "Generated by ConsCoder CLI tool. DO NOT EDIT."
  • -h, --help:显示帮助信息
  • -v, --version:显示版本信息

使用示例

基础用法

# 生成 Python 类模式代码
cons-coder --dir ./data --output ./output/python --lang python

# 生成 Go 常量模式代码
cons-coder --dir ./data --output ./output/go --lang go --mode const --package constants

# 生成 Java 代码并指定包名
cons-coder --dir ./data --output ./output/java --lang java --package com.example.constants

# 生成 TypeScript 代码
cons-coder --dir ./data --output ./output/ts --lang typescript --mode class

批量生成多种语言

# 使用提供的测试脚本
./test.sh

YAML 配置格式

YAML 文件使用简单的键值对格式定义常量:

# 文件: data/user_role.yaml
# 用户角色
normal: 1      # 普通用户
admin: 2       # 管理员
super_admin: 3 # 超级管理员
guest: 0       # 访客

格式说明:

  • 第一行注释(以 # 开头)作为常量组的描述
  • 每个键值对定义一个常量
  • 键为常量名称(snake_case)
  • 值为常量的数值
  • 行内注释(# 后的内容)作为常量的描述

生成模式对比

Class 模式

生成面向对象的类结构,提供值到名称的反向查找功能:

Python 示例:

class UserRole:
    """用户角色"""
    
    GUEST = 0        # 访客
    NORMAL = 1       # 普通用户
    ADMIN = 2        # 管理员
    SUPER_ADMIN = 3  # 超级管理员
    
    @classmethod
    def get_name(cls, value):
        """根据值获取常量名称"""
        for name, val in cls.__dict__.items():
            if not name.startswith('_') and not callable(val) and val == value:
                return name
        return None

Const 模式

生成简单的常量定义:

Python 示例:

# user_role 用户角色
USER_ROLE_GUEST = 0        # 访客
USER_ROLE_NORMAL = 1       # 普通用户
USER_ROLE_ADMIN = 2        # 管理员
USER_ROLE_SUPER_ADMIN = 3  # 超级管理员

支持的语言特性

语言 Class 模式 Const 模式 包名支持 索引文件
Python
Go
Java
Swift
Kotlin
TypeScript
JavaScript

项目结构

cons-coder/
├── main.go           # 主程序入口
├── parser/           # YAML 解析器
│   └── parser.go
├── generator/        # 代码生成器
│   ├── base.go      # 基础生成器接口
│   ├── python.go    # Python 生成器
│   ├── go.go        # Go 生成器
│   ├── java.go      # Java 生成器
│   ├── swift.go     # Swift 生成器
│   ├── kotlin.go    # Kotlin 生成器
│   ├── typescript.go # TypeScript 生成器
│   └── javascript.go # JavaScript 生成器
├── utils/            # 工具函数
│   └── utils.go
├── data/             # 示例 YAML 配置文件
├── output/           # 生成的代码输出目录
│   ├── class/       # Class 模式输出
│   └── const/       # Const 模式输出
├── build.sh          # 构建脚本
├── install.sh        # 安装脚本
└── test.sh           # 测试脚本

高级用法

自定义头部注释

cons-coder --dir ./data --output ./output --lang python \
  --header "© 2025 MyCompany. All rights reserved."

集成到 CI/CD

# .github/workflows/generate-constants.yml
name: Generate Constants

on:
  push:
    paths:
      - 'data/**/*.yaml'

jobs:
  generate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      
      - name: Setup Go
        uses: actions/setup-go@v2
        with:
          go-version: 1.19
      
      - name: Build ConsCoder
        run: go build -o cons-coder main.go
      
      - name: Generate Constants
        run: |
          ./cons-coder --dir ./data --output ./generated/python --lang python
          ./cons-coder --dir ./data --output ./generated/go --lang go --package constants
      
      - name: Commit Generated Code
        run: |
          git config --local user.email "action@github.com"
          git config --local user.name "GitHub Action"
          git add generated/
          git commit -m "Update generated constants"
          git push

最佳实践

  1. 版本控制:将 YAML 配置文件纳入版本控制,生成的代码可选择性纳入
  2. 命名规范:YAML 文件名使用 snake_case,与生成的类名/常量前缀对应
  3. 注释规范:充分利用注释功能,提供清晰的常量描述
  4. 目录组织:按模块/功能组织 YAML 文件,便于管理
  5. 自动化生成:集成到构建流程,确保常量定义的一致性

贡献指南

欢迎提交 Issue 和 Pull Request!

开发环境要求

  • Go 1.19+
  • Make(可选)

添加新语言支持

  1. generator/ 目录创建新的生成器文件
  2. 实现 Generator 接口
  3. main.go 中注册新的生成器
  4. 添加相应的测试用例

许可证

MIT License

作者

Your Name your.email@example.com

更新日志

v1.0.0 (2025-01-07)

  • 初始版本发布
  • 支持 7 种编程语言
  • 实现 class 和 const 两种生成模式
  • 支持批量处理和自定义配置

About

常量代码生成器 (Constants Code Generator):一个强大的多语言常量代码生成工具,支持从XML配置文件生成Python、Go、Java、Swift、Kotlin等语言的常量定义代码。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •