Skip to content

GitHub CLI extension to clone and format a template repository. Create new repos from templates to get up and running quickly e.g., `gh template clone my-crate --template heaths/template-rustlang`.

License

Notifications You must be signed in to change notification settings

heaths/gh-template

Repository files navigation

Project Template Extension

releases ci

A GitHub CLI extension to format a project template.

Install

Make sure you have version 2.0 or newer of the GitHub CLI installed.

gh extension install heaths/gh-template

Usage

To create a new repository from a template and format it:

gh template clone <name> --template <template> --public

screenshot

Templates

You can format files in a template repository as template files. Template files contain a mix of text and actions surrounded by {{ and }} e.g.,

# {{param "name" "" "What is the project name?" | titlecase}}

This is an example repository {{param "github.owner"}}/{{param "github.repo"}}.

You'll be prompted for any parameters not specified on the command line or already defined by the apply command.

Directories and files are processed alphabetically, so you only need to provide a default value and optional prompt for the first instance a parameter occurs alphabetically in the repository.

Because the .github/workflows directory may contain workflows with ${{ }} expressions, it is excluded automatically unless --delims is specified and not {{ or }}. If you need to format workflows as a template, consider using alternate delimiters throughout your template repository e.g, <% and %>.

Built-in parameters

Within a GitHub repository, the following parameters are already defined.

  • git.name
    The configured user.name for a Git repository.
  • git.email
    The configured user.email for a Git repository.
  • github.host
    The GitHub host e.g., "github.com" for "github.com/heaths/gh-template".
  • github.owner
    The GitHub owner e.g., "heaths" for "github.com/heaths/gh-template".
  • github.repo
    The GitHub repository name e.g., "gh-template" for "github.com/heaths/gh-template".

Functions

In addition to built-in functions, the following functions are also available:

  • param <name> [<default> [<prompt>]]
    Replace with a parameter named <name>, or prompt using an optional <default> with an optional <prompt>. If a <prompt> is not specified, the required <name> is used. The type of <default> dictates valid input. Only string and int are supported at this time.
  • pluralize <count> <thing>
    Append an "s" to <thing> if <count> is not equal to 1. <count> can be either an int or a string representing an int e.g., "1".
  • lowercase <string>
    Change the case of <string> to all lowercase characters.
  • titlecase <string>
    Change the case of <string> to Title Case characters.
  • uppercase <string>
    Change the case of <string> to UPPERCASE characters.
  • replace <from> <to> <source>
    Replaces all occurrences of <from> to <to> in the <source> string.
  • date
    Returns the current UTC date-time.
  • date.Format <layout>
    Formats the date-time according to time.Format.
  • date.Local
    Returns the current local date-time. You can call other date functions on the returned value e.g., date.Local.Year.
  • date.Year
    Returns the current UTC year.
  • true
    Returns true. Useful as a default value to accept y[es] or n[o] answers.
  • false
    Returns false. Useful as a default value to accept y[es] or n[o] answers.
  • deleteFile
    Deletes the current file, or a list of file names relative to the repo root.

You can also nest function calls. To default a project name to the GitHub repo name, for example:

{{param "name" (param "github.repo") "What is the project name?"}}

Examples

See the following template repositories for examples:

License

Licensed under the MIT license.

About

GitHub CLI extension to clone and format a template repository. Create new repos from templates to get up and running quickly e.g., `gh template clone my-crate --template heaths/template-rustlang`.

Topics

Resources

License

Stars

Watchers

Forks

Languages