Zig: Create a command line tool with Zig
hhstore opened this issue · 10 comments
hhstore commented
使用 zig 编写 cli 命令行工具:
需求背景:
场景1:
- 个人开发机器, git, zsh, fish, ssh, go, rust, zig 等一些工具, 模板配置(最优配置段).
场景2:
- 初始化项目, 经常需要频繁添加一些模板文件(license, .gitignore, Python, go, rust, zig 等项目配置模板).
- 虽然可以用
项目模板工具
来初始化, 但还是会遇到偶尔需要零星添加 or 改动一些文件.
小工具:
tryadd-cli
: 暂定命名.
功能:
- 支持添加各种模板文件.
- 交互式命令, 组合添加. 比如
.gitignore
组合多个语言(go, python, rust) 并集. - 支持远程 get 下载模板文件: 支持 github.
- 支持全局配置文件, 本地局部自定义配置.
- 支持 env 环境变量取参.
为什么使用 zig 开发?
- ✅ zig 和 rust 类似, 很适合写 cli 工具. 跨平台, 依赖少, 安装简单, 体积小.
- ✅ zig 语法比 rust 更简单+易上手.
- ✅ zig 也有
zig-clap
这种高仿 rust clap 的杀手级 cli 工具包.
hhstore commented
依赖包:
- ✅ https://github.com/Hejsil/zig-clap
- 借鉴 rust
clap
- 借鉴 rust
- ✅ https://github.com/PrajwalCH/yazap
- 借鉴 rust
clap
- 借鉴 rust
- ✅ https://github.com/sam701/zig-cli
- 借鉴 go
urfave/cli
- 借鉴 go
文件下载:
配置文件解析:
模板引擎:
- 类似 jinja 之类的包
- https://github.com/travisstaloch/template.zig
- https://github.com/batiati/mustache-zig
- https://github.com/nektro/zig-pek
- https://github.com/haze/etch
其他语言类似:
- ✅ rust: https://github.com/clap-rs/clap
- ✅ go: https://github.com/urfave/cli
hhstore commented
cli 参考示例项目:
search:
zig:
- https://github.com/Hejsil/zig-clap/blob/master/example/simple.zig
- https://github.com/natecraddock/zf
基于 zig-clap:
rust:
hhstore commented
hhstore commented
1
hhstore commented
1
hhstore commented
1
hhstore commented
1
hhstore commented
1
hhstore commented
1