GithubHelp home page GithubHelp logo

softprops / cargo-generate Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cargo-generate/cargo-generate

0.0 2.0 0.0 438 KB

cargo, make me a project

Home Page: https://crates.io/crates/cargo-generate

License: Apache License 2.0

Rust 100.00%

cargo-generate's Introduction

cargo-generate

cargo, make me a project

Build status Build Status

cargo-generate is a developer tool to help you get up and running quickly with a new Rust project by leveraging a pre-existing git repository as a template.

Here's an example of using cargo-generate with this template: demo.gif

Installation

Using cargo with system's OpenSSL

cargo install cargo-generate

See the openssl-sys crate readme on how to obtain the OpenSSL library for your system. Alternatively, use the vendored-openssl flag if you do not want to install OpenSSL.

Using cargo with vendored OpenSSL

cargo install cargo-generate --features vendored-openssl

Manual Install:

  1. Download the binary tarball for your platform from our releases page.

  2. Unpack the tarball and place the binary cargo-generate in ~/.cargo/bin/

Usage

Standard usage is to pass a --git flag to cargo generate or short cargo gen. This will prompt you to enter the name of your project.

cargo generate --git https://github.com/githubusername/mytemplate.git

You can also pass the name of your project to the tool using the --name or -n flag:

cargo generate --git https://github.com/githubusername/mytemplate.git --name myproject

Templates

Templates are git repositories whose files contain placeholders. The current supported placeholders are:

  • {{authors}}: this will be filled in by a function borrowed from Cargo's source code, that determines your information from Cargo's configuration.
  • {{project-name}}: this is supplied by either passing the --name flag to the command or working with the interactive CLI to supply a name.
  • {{crate_name}}: the snake_case_version of project-name
  • dates: the liquid date filter is enabled for this project. This means you can write something like {{ "now" | date: "%Y-%m-%d %H:%M" }}. For more information, check out the Liquid Documentation on date.

You can also add a .genignore file to your template. The files listed in the .genignore file will be removed from the local machine when cargo-generate is run on the end user's machine. The .genignore file is always ignored, so there is no need to list it in the .genignore file.

Here's a list of currently available templates. If you have a great template that you'd like to feature here, please file an issue or a PR!

Include / Exclude

Templates support a cargo-generate.toml, with a "template" section that allows you to configure the files that will be processed by cargo-generate. The behavior mirrors Cargo's Include / Exclude functionality, which is documented here. If you are using placeholders in a file name, and also wish to use placeholders in the contents of that file, you should setup your globs to match on the pre-rename filename.

[template]
include = ["Cargo.toml"]
# include and exclude are exclusive, if both appear we will use include
exclude = ["*.c"]

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
If you want to contribute to cargo-generate, please read our CONTRIBUTING notes.

cargo-generate's People

Contributors

4tm4j33tk4ur avatar aaronepower avatar antweiss avatar ashleygwilliams avatar csmoe avatar dd5ht avatar epage avatar eupn avatar jaysonsantos avatar k0pernicus avatar killercup avatar mendelt avatar migerh avatar mirrorcult avatar posborne avatar rahul-thakoor avatar rasendubi avatar rotationmatrix avatar sreyas-sreelal avatar toversus avatar xortive avatar yaahc avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.