summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
Diffstat (limited to 'models')
-rw-r--r--models/issue_label.go19
-rw-r--r--models/repo.go18
2 files changed, 33 insertions, 4 deletions
diff --git a/models/issue_label.go b/models/issue_label.go
index 4318406af7..1ea0ed85cc 100644
--- a/models/issue_label.go
+++ b/models/issue_label.go
@@ -132,6 +132,25 @@ func (label *Label) ForegroundColor() template.CSS {
return template.CSS("#000")
}
+func loadLabels(labelTemplate string) ([]string, error) {
+ list, err := GetLabelTemplateFile(labelTemplate)
+ if err != nil {
+ return nil, ErrIssueLabelTemplateLoad{labelTemplate, err}
+ }
+
+ labels := make([]string, len(list))
+ for i := 0; i < len(list); i++ {
+ labels[i] = list[i][0]
+ }
+ return labels, nil
+}
+
+// LoadLabelsFormatted loads the labels' list of a template file as a string separated by comma
+func LoadLabelsFormatted(labelTemplate string) (string, error) {
+ labels, err := loadLabels(labelTemplate)
+ return strings.Join(labels, ", "), err
+}
+
func initalizeLabels(e Engine, repoID int64, labelTemplate string) error {
list, err := GetLabelTemplateFile(labelTemplate)
if err != nil {
diff --git a/models/repo.go b/models/repo.go
index 6a260d393c..2fd4df9206 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -64,8 +64,8 @@ var (
// Readmes contains the readme files
Readmes []string
- // LabelTemplates contains the label template files
- LabelTemplates []string
+ // LabelTemplates contains the label template files and the list of labels for each file
+ LabelTemplates map[string]string
// ItemsPerPage maximum items per page in forks, watchers and stars of a repo
ItemsPerPage = 40
@@ -100,11 +100,21 @@ func loadRepoConfig() {
Gitignores = typeFiles[0]
Licenses = typeFiles[1]
Readmes = typeFiles[2]
- LabelTemplates = typeFiles[3]
+ LabelTemplatesFiles := typeFiles[3]
sort.Strings(Gitignores)
sort.Strings(Licenses)
sort.Strings(Readmes)
- sort.Strings(LabelTemplates)
+ sort.Strings(LabelTemplatesFiles)
+
+ // Load label templates
+ LabelTemplates = make(map[string]string)
+ for _, templateFile := range LabelTemplatesFiles {
+ labels, err := LoadLabelsFormatted(templateFile)
+ if err != nil {
+ log.Error("Failed to load labels: %v", err)
+ }
+ LabelTemplates[templateFile] = labels
+ }
// Filter out invalid names and promote preferred licenses.
sortedLicenses := make([]string, 0, len(Licenses))