- ---
- date: "2019-11-28:00:00+02:00"
- title: "Template Repositories"
- slug: "template-repositories"
- weight: 14
- toc: true
- draft: false
- menu:
- sidebar:
- parent: "usage"
- name: "Template Repositories"
- weight: 14
- identifier: "template-repositories"
- ---
-
- ## Template Repositories
- Gitea `1.11.0` and above includes template repositories, and one feature implemented with them is auto-expansion of specific variables within your template files.
- To tell Gitea which files to expand, you must include a `template` file inside the `.gitea` directory of the template repository.
- Gitea uses [gobwas/glob](https://github.com/gobwas/glob) for its glob syntax. It closely resembles a traditional `.gitignore`, however there may be slight differences.
-
- ### Example `.gitea/template` file
- All paths are relative to the base of the repository
- ```gitignore
- # All .go files, anywhere in the repository
- **.go
-
- # All text files in the text directory
- text/*.txt
-
- # A specific file
- a/b/c/d.json
-
- # Batch files in both upper or lower case can be matched
- **.[bB][aA][tT]
- ```
- **NOTE:** The `template` file will be removed from the `.gitea` directory when a repository is generated from the template.
-
- ### Variable Expansion
- In any file matched by the above globs, certain variables will be expanded.
- All variables must be of the form `$VAR` or `${VAR}`. To escape an expansion, use a double `$$`, such as `$$VAR` or `$${VAR}`
-
- | Variable | Expands To | Transformable |
- |----------------------|-----------------------------------------------------|---------------|
- | REPO_NAME | The name of the generated repository | ✓ |
- | TEMPLATE_NAME | The name of the template repository | ✓ |
- | REPO_DESCRIPTION | The description of the generated repository | ✘ |
- | TEMPLATE_DESCRIPTION | The description of the template repository | ✘ |
- | REPO_OWNER | The owner of the generated repository | ✓ |
- | TEMPLATE_OWNER | The owner of the template repository | ✓ |
- | REPO_LINK | The URL to the generated repository | ✘ |
- | TEMPLATE_LINK | The URL to the template repository | ✘ |
- | REPO_HTTPS_URL | The HTTP(S) clone link for the generated repository | ✘ |
- | TEMPLATE_HTTPS_URL | The HTTP(S) clone link for the template repository | ✘ |
- | REPO_SSH_URL | The SSH clone link for the generated repository | ✘ |
- | TEMPLATE_SSH_URL | The SSH clone link for the template repository | ✘ |
-
- ### Transformers :robot:
- Gitea `1.12.0` adds a few transformers to some of the applicable variables above.
- For example, to get `REPO_NAME` in `PASCAL`-case, your template would use `${REPO_NAME_PASCAL}`
-
- Feeding `go-sdk` to the available transformers yields...
-
- | Transformer | Effect |
- |-------------|------------|
- | SNAKE | go_sdk |
- | KEBAB | go-sdk |
- | CAMEL | goSdk |
- | PASCAL | GoSdk |
- | LOWER | go-sdk |
- | UPPER | GO-SDK |
- | TITLE | Go-Sdk |
-
|