1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
// Used to show a specific package
package useflags
import (
"html/template"
"net/http"
utils2 "soko/pkg/app/utils"
"soko/pkg/database"
"soko/pkg/models"
"soko/pkg/utils"
"strings"
)
// Show renders a template to show a given USE flag
func Show(w http.ResponseWriter, r *http.Request) {
useflagName := r.URL.Path[len("/useflags/"):]
var useflags []models.Useflag
err := database.DBCon.Model(&useflags).Where("name = ? ", useflagName).Select()
if err != nil || len(useflags) < 1 {
http.NotFound(w,r)
return
}
useflag := useflags[0]
var localuseflags []models.Useflag
for _, use := range useflags{
if(use.Scope == "global"){
useflag = use
}else if(use.Scope == "local"){
localuseflags = append(localuseflags, use)
}else if(use.Scope == "use_expand"){
ShowUseExpand(w, r, use)
return
}
}
var versions []models.Version
err = database.DBCon.Model(&versions).Column("atom").Where("useflags::jsonb @> ?", "\"" + useflagName + "\"").Select()
if err != nil {
panic(err)
}
var packages []string
for _, version := range versions{
packages = append(packages, version.Atom)
}
packages = utils.Deduplicate(packages)
data := struct {
Page string
Useflag models.Useflag
LocalUseflags []models.Useflag
Packages []string
Application models.Application
}{
Page: "useflags",
Useflag: useflag,
LocalUseflags: localuseflags,
Packages: packages,
Application: utils2.GetApplicationData(),
}
templates := template.Must(
template.Must(
template.New("Show").ParseGlob("web/templates/layout/*.tmpl")).
ParseGlob("web/templates/useflags/show.tmpl"))
templates.ExecuteTemplate(w, "show.tmpl", data)
}
// ShowUseExpand renders a template to show a given use_expand
func ShowUseExpand(w http.ResponseWriter, r *http.Request, useExpand models.Useflag) {
funcMap := template.FuncMap{
"replaceall": strings.ReplaceAll,
}
var otheruseexpands []models.Useflag
err := database.DBCon.Model(&otheruseexpands).Where("use_expand = ? ", useExpand.UseExpand).Select()
if err != nil {
panic(err)
}
var versions []models.Version
err = database.DBCon.Model(&versions).Column("atom").Where("useflags::jsonb @> ?", "\"" + useExpand.Name + "\"").Select()
if err != nil {
panic(err)
}
var packages []string
for _, version := range versions{
packages = append(packages, version.Atom)
}
packages = utils.Deduplicate(packages)
data := struct {
Page string
Useflag models.Useflag
OtherUseExpands []models.Useflag
Packages []string
Application models.Application
}{
Page: "useflags",
Useflag: useExpand,
OtherUseExpands: otheruseexpands,
Packages: packages,
Application: utils2.GetApplicationData(),
}
templates := template.Must(
template.Must(
template.New("Show").Funcs(funcMap).ParseGlob("web/templates/layout/*.tmpl")).
ParseGlob("web/templates/useflags/showexpand.tmpl"))
templates.ExecuteTemplate(w, "showexpand.tmpl", data)
}
|