Files
go-omni/cmd/go-omni

go-omni CLI

从远程安装,生成一个带 Handler / Service / Repository / Model 分层的服务骨架:

go install git.yuntuo.hk/k2safe/go-omni/cmd/go-omni@v0.1.1
go-omni new --module example.com/billing ./billing
cd billing
go mod tidy
go run ./cmd/server

通过 go install ...@版本 安装的 CLI 从构建信息中读取版本,并把它固定到生成项目的 go.mod。不会使用不存在的 v0.0.0,也不会在普通业务目录中添加本地 replace。

需要选择其他已发布版本时,使用完整版本号:

go-omni new --framework-version v0.1.1 --module example.com/billing ./billing

--framework-version 禁用自动本地替换;main、latest 等浮动引用不接受为固定版本。 源码构建的 CLI 使用代码中声明的目标发布版本;该版本未发布时请显式选择已发布版本,或用 --framework-dir 验证本地源码。

在 GoOmni 源码目录执行时,命令会自动在生成项目的 go.mod 中加入本地 replace git.yuntuo.hk/k2safe/go-omni => ...,便于立即运行和测试。目标目录非空时命令会停止,明确传入 --force 才会覆盖脚手架文件。

也可以在任意目录显式指定源码路径:

go-omni new --framework-dir /path/to/go-omni --module example.com/billing ./billing

生成服务默认包含 /health/live、/health/ready 和示例 POST /users。 退出信号通过 signal.NotifyContext 传入 RunContext,Logger 的关闭函数注册到应用生命周期。

发布验收使用 Python 3 标准库脚本,不需要额外 Python 依赖:

python3 scripts/verifyScaffold.py --version v0.1.1

脚本在源码目录外安装远程 CLI、生成项目,确认固定版本且没有 replace,再下载依赖、 编译、请求接口,并对真实二进制分别发送 SIGINT 和 SIGTERM。同时验证框架 Run 的 信号处理和清理回调。每个进程都必须退出码为 0、释放监听端口;临时项目和测试进程会被清理。

发布前验证当前源码:

go build -o /tmp/go-omni ./cmd/go-omni
python3 scripts/verifyScaffold.py --cli /tmp/go-omni --framework-dir .