1package main
2
3import (
4 "net/http"
5)
6
7func homeHandler(w http.ResponseWriter, r *http.Request) {
8 config := GlobalConfig
9
10 groupsMap := make(map[string][]Repository)
11 var groupOrder []string
12
13 for _, repo := range config.Repositories {
14 if _, ok := groupsMap[repo.Group]; !ok {
15 groupOrder = append(groupOrder, repo.Group)
16 }
17 groupsMap[repo.Group] = append(groupsMap[repo.Group], repo)
18 }
19
20 var grouped []GroupedRepositories
21 for _, groupName := range groupOrder {
22 grouped = append(grouped, GroupedRepositories{
23 Name: groupName,
24 Repositories: groupsMap[groupName],
25 })
26 }
27
28 err := templates.ExecuteTemplate(w, "repositories.html", struct {
29 Groups []GroupedRepositories
30 Repo *Repository
31 }{
32 Groups: grouped,
33 Repo: nil,
34 })
35
36 if err != nil {
37 http.Error(w, err.Error(), http.StatusInternalServerError)
38 }
39}