linux-china / tgm

Template generator management

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

tgm - Template Generator Manager

Build Status tgm Crate dependency status

Generate project structure from git template repository, and ignited by MicroServices Service Template Pattern

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:

$ 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

About

Template generator management

License:Apache License 2.0


Languages

Language:Rust 98.1%Language:Just 1.9%