Authoring - Cargo Generate Documentation
Description: cargo, make me a project

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Template Authoring

> Available since version 0.9.0

As a template author you’re probably concerned about successful builds of your template.

Imagine a couple of months after your first template release, some new versions of any dependencies would break your template, and you would not even be aware of it?

The answer to this question is a vital build pipeline for your template project. This challenge got much simpler to solve with the new official cargo-generate GitHub Action.

Here is an example:

    tree .github
    .github
    └── workflows
        └── build.yml

The content of `build.yml` as a paste template:

    name: Build Template
    on:
      # https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_dispatch
      workflow_dispatch:
      schedule:
        - cron: '0 18 * * 5'
      push:
        branches: [ '*' ]
        paths-ignore:
          - "**/docs/**"
          - "**.md"

    jobs:
      build:
        runs-on: ubuntu-latest
        env:
          PROJECT_NAME: mytemplate
        steps:
          - uses: actions/checkout@v4
          - uses: cargo-generate/cargo-generate-action@latest
            with:
              name: ${{ env.PROJECT_NAME }}
          - uses: dtolnay/rust-toolchain@stable
            with:
              toolchain: stable
          # we need to move the generated project to a temp folder, away from the template project
          # otherwise `cargo` runs would fail
          # see https://github.com/rust-lang/cargo/issues/9922
          - run: |
              mv $PROJECT_NAME ${{ runner.temp }}/
              cd ${{ runner.temp }}/$PROJECT_NAME
              cargo check

This is a very simple pipeline that builds weekly and on push. It processes your template repo and runs a `cargo check` as the final step. That’s it, a good start to build on.