基于模板的Go代码生成工具 genus
List of Contents:
genus
A general code generation tools in Go.
New to code generation? Refer text/template for basic knowledge.
Why Another Generator?
Code generation has been becoming a popular way of metaprogramming in Go.
For example, when working with a ORM framework, you may want to create models with a given database schema with json tag support. it's trivial and burdensome when it comes with a database with hundreds even thousands of tables.
A code generation tool can help on this kind of issues through retriving database schema and rendering templates to go code.
However, before it turns into reality, you'll have to build a tool to
- reading and organizing templates properly
- formating the generated source code
- fixing imports, especially removing unused imports
- handle relative imports(imports among the generated code)
- naming of generated file names
Today, generators are handling code generation in their own ways, which means that you can not generate models of Beego ORM with generators or gorm. It doesn't make sense to build a new generator becuase those models are generated from the same database schema.
Genus provides a clean way to perform code generation. Go to Examples to see more details.
Installation
Genus has built-in CLI support, you can install it by performing
go get -u github.com/yangyuqian/genus/cmd/genus
Features - V1
-
[x] Template Wrapper
- [x] loading templates from diretories, files and bytes easily
- [x] grouping templates for Go packages
- [x] formating, fixing imports after code generation
-
[x] Generation Planner
- [x] planning generation scenarios on template repository
- [x] planner for regular files(non-Golang)
-
[x] Language specified helper funcs
- [x] Golang helper funcs
-
[x] Generation Plan Specification
- [x] JSON schema and validation support
- [x] Reference and pointer support for complex specfications
-
[x] Command-line Interface
- [x] accept context in JSON and do generation without writing any code
- [x] create Generation Plan Specification of Database from given database
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)