Skip to content

Commit 45ac090

Browse files
committed
fix
1 parent ec261b6 commit 45ac090

File tree

7 files changed

+37
-36
lines changed

7 files changed

+37
-36
lines changed

modules/label/parser.go

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,14 @@ func (err ErrTemplateLoad) Error() string {
3636
// GetTemplateFile loads the label template file by given name,
3737
// then parses and returns a list of name-color pairs and optionally description.
3838
func GetTemplateFile(name string) ([]*Label, error) {
39-
data, err := options.Labels(name + ".yaml")
40-
if err == nil && len(data) > 0 {
41-
return parseYamlFormat(name+".yaml", data)
42-
}
43-
44-
data, err = options.Labels(name + ".yml")
45-
if err == nil && len(data) > 0 {
46-
return parseYamlFormat(name+".yml", data)
47-
}
48-
49-
data, err = options.Labels(name)
39+
data, err := options.Labels(name)
5040
if err != nil {
51-
return nil, ErrTemplateLoad{name, fmt.Errorf("GetRepoInitFile: %w", err)}
41+
return nil, ErrTemplateLoad{name, fmt.Errorf("GetTemplateFile: %w", err)}
5242
}
5343

44+
if strings.HasSuffix(name, ".yaml") || strings.HasSuffix(name, ".yml") {
45+
return parseYamlFormat(name, data)
46+
}
5447
return parseLegacyFormat(name, data)
5548
}
5649

modules/repository/init.go

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ import (
2727
asymkey_service "code.gitea.io/gitea/services/asymkey"
2828
)
2929

30+
type OptionFile struct {
31+
FileName string
32+
DisplayName string
33+
Description string
34+
}
35+
3036
var (
3137
// Gitignores contains the gitiginore files
3238
Gitignores []string
@@ -37,8 +43,8 @@ var (
3743
// Readmes contains the readme files
3844
Readmes []string
3945

40-
// LabelTemplates contains the label template files and the list of labels for each file
41-
LabelTemplates map[string]string
46+
// LabelTemplateFiles contains the label template files and the list of labels for each file
47+
LabelTemplateFiles []OptionFile
4248
)
4349

4450
// LoadRepoConfig loads the repository config
@@ -51,14 +57,6 @@ func LoadRepoConfig() {
5157
if err != nil {
5258
log.Fatal("Failed to get %s files: %v", t, err)
5359
}
54-
if t == "label" {
55-
for i, f := range files {
56-
ext := strings.ToLower(filepath.Ext(f))
57-
if ext == ".yaml" || ext == ".yml" {
58-
files[i] = f[:len(f)-len(ext)]
59-
}
60-
}
61-
}
6260
customPath := path.Join(setting.CustomPath, "options", t)
6361
isDir, err := util.IsDir(customPath)
6462
if err != nil {
@@ -71,7 +69,14 @@ func LoadRepoConfig() {
7169
}
7270

7371
for _, f := range customFiles {
74-
if !util.SliceContainsString(files, f, true) {
72+
stat, err := os.Stat(filepath.Join(customPath, f))
73+
if err != nil {
74+
log.Fatal("Failed to stat custom %s files: %v", t, err)
75+
}
76+
if stat.Size() == 0 {
77+
// it's good to give end users a chance to hide builtin options if they put an empty file in their custom directory
78+
files = util.SliceRemoveAllFunc(files, func(s string) bool { return strings.EqualFold(s, f) })
79+
} else if !util.SliceContainsString(files, f, true) {
7580
files = append(files, f)
7681
}
7782
}
@@ -82,20 +87,23 @@ func LoadRepoConfig() {
8287
Gitignores = typeFiles[0]
8388
Licenses = typeFiles[1]
8489
Readmes = typeFiles[2]
85-
LabelTemplatesFiles := typeFiles[3]
90+
labelTemplatesFiles := typeFiles[3]
8691
sort.Strings(Gitignores)
8792
sort.Strings(Licenses)
8893
sort.Strings(Readmes)
89-
sort.Strings(LabelTemplatesFiles)
94+
sort.Strings(labelTemplatesFiles)
9095

9196
// Load label templates
92-
LabelTemplates = make(map[string]string)
93-
for _, templateFile := range LabelTemplatesFiles {
97+
for _, templateFile := range labelTemplatesFiles {
9498
labels, err := label.LoadFormatted(templateFile)
9599
if err != nil {
96100
log.Error("Failed to load labels: %v", err)
97101
}
98-
LabelTemplates[templateFile] = labels
102+
LabelTemplateFiles = append(LabelTemplateFiles, OptionFile{
103+
DisplayName: strings.TrimSuffix(templateFile, filepath.Ext(templateFile)),
104+
FileName: templateFile,
105+
Description: labels,
106+
})
99107
}
100108

101109
// Filter out invalid names and promote preferred licenses.

routers/web/org/setting.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,6 @@ func Labels(ctx *context.Context) {
247247
ctx.Data["PageIsOrgSettings"] = true
248248
ctx.Data["PageIsOrgSettingsLabels"] = true
249249
ctx.Data["RequireTribute"] = true
250-
ctx.Data["LabelTemplates"] = repo_module.LabelTemplates
250+
ctx.Data["LabelTemplateFiles"] = repo_module.LabelTemplateFiles
251251
ctx.HTML(http.StatusOK, tplSettingsLabels)
252252
}

routers/web/repo/issue_label.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func Labels(ctx *context.Context) {
2929
ctx.Data["PageIsIssueList"] = true
3030
ctx.Data["PageIsLabels"] = true
3131
ctx.Data["RequireTribute"] = true
32-
ctx.Data["LabelTemplates"] = repo_module.LabelTemplates
32+
ctx.Data["LabelTemplateFiles"] = repo_module.LabelTemplateFiles
3333
ctx.HTML(http.StatusOK, tplLabels)
3434
}
3535

routers/web/repo/repo.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ func Create(ctx *context.Context) {
132132

133133
// Give default value for template to render.
134134
ctx.Data["Gitignores"] = repo_module.Gitignores
135-
ctx.Data["LabelTemplates"] = repo_module.LabelTemplates
135+
ctx.Data["LabelTemplateFiles"] = repo_module.LabelTemplateFiles
136136
ctx.Data["Licenses"] = repo_module.Licenses
137137
ctx.Data["Readmes"] = repo_module.Readmes
138138
ctx.Data["readme"] = "Default"
@@ -200,7 +200,7 @@ func CreatePost(ctx *context.Context) {
200200
ctx.Data["Title"] = ctx.Tr("new_repo")
201201

202202
ctx.Data["Gitignores"] = repo_module.Gitignores
203-
ctx.Data["LabelTemplates"] = repo_module.LabelTemplates
203+
ctx.Data["LabelTemplateFiles"] = repo_module.LabelTemplateFiles
204204
ctx.Data["Licenses"] = repo_module.Licenses
205205
ctx.Data["Readmes"] = repo_module.Readmes
206206

templates/repo/create.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@
117117
<div class="default text">{{.locale.Tr "repo.issue_labels_helper"}}</div>
118118
<div class="menu">
119119
<div class="item" data-value="">{{.locale.Tr "repo.issue_labels_helper"}}</div>
120-
{{range $template, $labels := .LabelTemplates}}
121-
<div class="item" data-value="{{$template}}">{{$template}}<br/><i>({{$labels}})</i></div>
120+
{{range .LabelTemplateFiles}}
121+
<div class="item" data-value="{{.FileName}}">{{.DisplayName}}<br/><i>({{.Description}})</i></div>
122122
{{end}}
123123
</div>
124124
</div>

templates/repo/issue/labels/label_load_template.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
<input type="hidden" name="template_name" value="Default">
1111
<div class="default text">{{.locale.Tr "repo.issues.label_templates.helper"}}</div>
1212
<div class="menu">
13-
{{range $template, $labels := .LabelTemplates}}
14-
<div class="item" data-value="{{$template}}">{{$template}}<br/><i>({{$labels}})</i></div>
13+
{{range .LabelTemplateFiles}}
14+
<div class="item" data-value="{{.FileName}}">{{.DisplayName}}<br/><i>({{.Description}})</i></div>
1515
{{end}}
1616
</div>
1717
{{svg "octicon-triangle-down" 18 "dropdown icon"}}

0 commit comments

Comments
 (0)