-
-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Variable expansion in repository templates #9163
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
9a31860
Start expansion
jolheiser f308abc
_template rather than .template
jolheiser 047b4c4
Use ioutil
jolheiser cc0eb97
Add descriptions to mapping
jolheiser 9ba2f8e
Start globbing
jolheiser 234ec94
Tune globbing
jolheiser 8f1f498
Re-arrange imports
jolheiser 099b2d4
Merge branch 'master' into template_expand
jolheiser 0ab0daf
Don't expand git hooks
jolheiser fa275ef
Add glob tests for .giteatemplate
jolheiser b2e4d61
Parse globs separately so they can be tested more easily
jolheiser 8e3e095
Change template location and add docs
jolheiser 57cf49a
nit
jolheiser f7d55ff
Update docs/content/doc/features/gitea-directory.md
jolheiser 98cba56
Update docs/content/doc/features/gitea-directory.md
jolheiser b98f1ea
Add upper-lower case match
jolheiser 981e182
Nits
jolheiser e06a3af
Merge branch 'master' into template_expand
jolheiser 98f8400
Update models/repo_generate.go
jolheiser 4373f43
Merge branch 'master' into template_expand
jolheiser b3d57da
Merge branch 'master' into template_expand
jolheiser File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
--- | ||
date: "2019-11-28:00:00+02:00" | ||
title: "The .gitea Directory" | ||
slug: "gitea-directory" | ||
weight: 40 | ||
toc: true | ||
draft: false | ||
menu: | ||
sidebar: | ||
parent: "features" | ||
name: "The .gitea Directory" | ||
weight: 50 | ||
identifier: "gitea-directory" | ||
--- | ||
|
||
# The .gitea directory | ||
Gitea repositories can include a `.gitea` directory at their base which will store settings/configurations for certain features. | ||
|
||
## Templates | ||
Gitea 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 | | ||
|----------------------|-----------------------------------------------------| | ||
| 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_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 | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
// Copyright 2019 The Gitea Authors. All rights reserved. | ||
// Use of this source code is governed by a MIT-style | ||
// license that can be found in the LICENSE file. | ||
|
||
package models | ||
jolheiser marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
import ( | ||
"testing" | ||
jolheiser marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
"github.com/stretchr/testify/assert" | ||
) | ||
|
||
var giteaTemplate = []byte(` | ||
# Header | ||
|
||
# All .go files | ||
**.go | ||
|
||
# All text files in /text/ | ||
text/*.txt | ||
|
||
# All files in modules folders | ||
**/modules/* | ||
`) | ||
|
||
func TestGiteaTemplate(t *testing.T) { | ||
gt := GiteaTemplate{Content: giteaTemplate} | ||
assert.Equal(t, len(gt.Globs()), 3) | ||
|
||
tt := []struct { | ||
Path string | ||
Match bool | ||
}{ | ||
{Path: "main.go", Match: true}, | ||
{Path: "a/b/c/d/e.go", Match: true}, | ||
{Path: "main.txt", Match: false}, | ||
{Path: "a/b.txt", Match: false}, | ||
{Path: "text/a.txt", Match: true}, | ||
{Path: "text/b.txt", Match: true}, | ||
{Path: "text/c.json", Match: false}, | ||
{Path: "a/b/c/modules/README.md", Match: true}, | ||
{Path: "a/b/c/modules/d/README.md", Match: false}, | ||
} | ||
|
||
for _, tc := range tt { | ||
t.Run(tc.Path, func(t *testing.T) { | ||
match := false | ||
for _, g := range gt.Globs() { | ||
if g.Match(tc.Path) { | ||
match = true | ||
break | ||
} | ||
} | ||
assert.Equal(t, tc.Match, match) | ||
}) | ||
} | ||
} |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.