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}