Skip to content
/ tapgen Public

🛠️ Tony's Almighty Project Generator

License

Notifications You must be signed in to change notification settings

tnychn/tapgen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tapgen

Tony's Almighty Project Generator

A general-purpose, language-agnostic, yet simple and fast (i.e. almighty) project generator to bootstrap and scaffold your projects easily.

Wanna start developing your new project real quick? Run a single command and you can start coding right away.

Productivity++: No more wasting your time copy-and-pasting boilerplate starter code.

Features

  • Just run the binary: No intepreters or environment setup needed.

  • Bloat-free command line tool: No more overwhelmed by tons of flags and options, i.e. it just simply works.

  • Full power of the MiniJinja template engine.

    • fast and lightweight
    • familiar syntax of Jinja2
    • extensible filters and functions etc.
  • Customizable prompts and template variables.

    • conditional prompts
    • range for integers
    • regex pattern validation for strings
    • single choice or multiple choices prompts
  • Scripts as hooks that are run before and after generation.

  • Like Cookiecutter, but faaaster (written in Rust).

Usage

$ tapgen <SRC> [DST]

Currently, SRC can be one of the following:

  • shorthand for git source1:

    • github:<owner>/<repo>
    • gitlab:<owner>/<repo>
    • bitbucket:<owner>/<repo>
  • shorthand for prefix source2: @:<path/to/template/under/prefix>

  • path to local tapgen.toml file or directory that contains a tapgen.toml file

1: You can specify additional path in case when the repository contains multiple templates, or when the template is several levels deep inside the repository, e.g. github:tnychn/templates/subdir1/subdir2.

2: Relative to the prefix path, e.g. if the prefix path is /Users/tony/.tapgen, then @:foo/bar becomes /Users/tony/.tapgen/foo/bar.

TODO

  • Override variable values in CLI.

  • Replay previous generation.

  • Support templated defaults.

  • Extend template filters/functions/tests via scripting.


~ crafted with ♥︎ by tnychn ~
MIT © 2024 Tony Chan

Releases

No releases published

Languages