15 个版本 (9 个破坏性版本)
0.10.0 | 2022 年 1 月 1 日 |
---|---|
0.9.1 | 2021 年 9 月 22 日 |
0.8.1 | 2020 年 9 月 26 日 |
#2820 在 命令行实用程序
44KB
866 行
tgm - 模板生成器管理器
从 Git 模板仓库生成项目结构。
为什么选择 tgm?
- 管理所有模板仓库
- 快速从模板创建应用程序
- 提示模板变量
模板仓库
请在您的模板仓库中添加 template.json 文件,代码如下:
{
"name": "spring-boot-java",
"repository": "https://github.com/linux-china/spring-boot-java-template",
"description": "Spring Boot App Java",
"post_create": "mvn -DskipTests compile",
"variables": [
{
"name": "groupId",
"description": "Maven groupId"
},
{
"name": "artifactId",
"description": "Maven artifactId"
}
],
"files": [
"pom.xml","src/main/resources/application.properties"
]
}
注意:您可以为变量的值添加正则表达式模式验证,如下所示
{
"name": "email",
"description": "author email",
"pattern": "[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}"
}
在资源文件中,例如 pom.xml,使用以下模板变量
<project>
<groupId>@groupId@</groupId>
<artifactId>@artifactId@</artifactId>
</project>
默认全局变量
- current_year:当前年份,例如 2020
- current_date:当前日期,格式如下 08/30/2020
- os_name:linux、macos、ios、freebsd、dragonfly、netbsd、openbsd、solaris、android、windows
- os_family:unix、windows
- os_arch:x86_64、arm
安装 & 使用
$ cargo install tgm
$ tgm add linux-china/spring-boot-java-template
$ tgm list
$ tgm create spring-boot-java spring-app-demo
tgm 命令
- list:列出本地模板
- list --remote:列出来自 https://github.com/tgm-templates/ 的模板
- add:从 GitHub 模板仓库或手动添加新模板
$ tgm add --name spring-boot-java --repo https://github.com/linux-china/spring-boot-java-template.git --desc "Spring Boot Java template"
- 从 GitHub 仓库导入模板
$ tgm import linux-china/spring-boot-kotlin-template
$ tgm import https://github.com/linux-china/spring-boot-java-template
- remove:删除模板
$ tgm remove spring-boot-java
- create:从模板创建应用程序
$ tgm create spring-boot-java spring-demo1
Shell 完成功能
oh-my-zsh
$ tgm complete --oh_my_zsh
tgm 将在 ~/.zshrc 中的插件中添加 tgm。
bash
$ tgm complete --bash > tgm-completion.bash
$ source ./tgm-completion.bash
参考资料
- 命令行实用程序:https://crates.org.cn/command-line-utilities
- 在 Rust 中使用命令行应用程序:https://rust-lang.net.cn/what/cli
- Serde:用于序列化和反序列化 Rust 数据结构的框架 https://serde.rs/
依赖关系
~11–27MB
~379K SLoC