🐣
Cargo Hatch
Hatch new projects like a chick coming out of its egg.
Cargo hatch is a cargo init
/cargo new
on steroids, allowing complex templates thanks to the Tera engine. Additional template values can be configured and requested from the user during execution.
cargo-generate
instead?
Why not This project was born out of frustration with cargo-generate. Although a great project it didn't work for me personally as I got SEGFAULTs and Git errors whenever I tried to generate a new project with it.
The main differences are:
- Less emojis. Cargo hatch tries to keep the output simple and use colors here and there. Eventually you may discover an emoji here and there as well.
- Local templates. Cargo hatch provides a
local
subcommand that simply takes any directory and treats it as template making it easy to test templates or have local private templates, Git or not. - More argument types. Cargo hatch tries to provide a broader selection of input types, currently including booleans, integers, floating point numbers, strings, lists (of strings) and multi-lists (of strings).
- Tera template engine. Cargo hatch uses the Tera template engine, providing a very Jinja2-ish syntax and if you use the Zola static-site-generator, you may already be familiar with it.
Installation
To build this project have rust
and cargo
available in the latest version. rustup
is the recommended way of installing and managing the Rust toolchain.
Then run the following command to install this project:
cargo install cargo-hatch
Make sure that your cargo binary path (usually $HOME/.cargo/bin
) is available from your $PATH
.
Usage
The usage of cargo-hatch
is rather detailed and therefore lives in a separate file. Check out USAGE.md for further instructions.
License
This project is licensed under the AGPL-3.0 License (or https://www.gnu.org/licenses/agpl-3.0.html).