15 releases (9 breaking)
0.10.0 | Jan 1, 2022 |
---|---|
0.9.1 | Sep 22, 2021 |
0.8.1 | Sep 26, 2020 |
#2777 in Command line utilities
44KB
866 lines
tgm - Template Generator Manager
Generate project structure from git template repository.
Why tgm?
- Manage all template repositories
- Create app from template quickly
- Prompt for template variables
Template repository
Please add template.json file in your template repository, code as following:
{
"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"
]
}
Attention: You can add regex pattern validation for variable's value like following:
{
"name": "email",
"description": "author email",
"pattern": "[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}"
}
In the resource files, such as pom.xml, use template variable as following:
<project>
<groupId>@groupId@</groupId>
<artifactId>@artifactId@</artifactId>
</project>
default global variables:
- current_year: current year, such as 2020
- current_date: current date, format like 08/30/2020
- os_name: linux, macos, ios, freebsd, dragonfly, netbsd, openbsd, solaris, android, windows
- os_family: unix, windows
- os_arch: x86_64, arm
Install & Usage
$ cargo install tgm
$ tgm add linux-china/spring-boot-java-template
$ tgm list
$ tgm create spring-boot-java spring-app-demo
tgm commands:
- list: list local templates
- list --remote: list templates from https://github.com/tgm-templates/
- add: add new template from github template repository or manual
$ tgm add --name spring-boot-java --repo https://github.com/linux-china/spring-boot-java-template.git --desc "Spring Boot Java template"
- import template from github's repository
$ tgm import linux-china/spring-boot-kotlin-template
$ tgm import https://github.com/linux-china/spring-boot-java-template
- remove: remove template
$ tgm remove spring-boot-java
- create: create app from template
$ tgm create spring-boot-java spring-demo1
Shell completion
oh-my-zsh
$ tgm complete --oh_my_zsh
tgm will add tgm to plugins in ~/.zshrc.
bash
$ tgm complete --bash > tgm-completion.bash
$ source ./tgm-completion.bash
References
- Command line utilities: https://lib.rs/command-line-utilities
- Command-line apps in Rust: https://www.rust-lang.org/what/cli
- Serde: framework for serializing and deserializing Rust data structures https://serde.rs/
Dependencies
~11–28MB
~360K SLoC