aboutsummaryrefslogtreecommitdiff
path: root/pkg/app
diff options
context:
space:
mode:
authorArthur Zamarin <arthurzam@gentoo.org>2024-03-16 23:01:04 +0200
committerArthur Zamarin <arthurzam@gentoo.org>2024-03-16 23:01:04 +0200
commitd08bb9c14e36723e7347520b4444bf52c04c5eeb (patch)
tree5fc0478e8dca75966166427aa6e6bff29c968ed6 /pkg/app
parentselfcheck: fix repo path (diff)
downloadsoko-d08bb9c14e36723e7347520b4444bf52c04c5eeb.tar.gz
soko-d08bb9c14e36723e7347520b4444bf52c04c5eeb.tar.bz2
soko-d08bb9c14e36723e7347520b4444bf52c04c5eeb.zip
app/package/useflags: show all local useflags
Resolves: https://github.com/gentoo/soko/issues/15 Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
Diffstat (limited to 'pkg/app')
-rw-r--r--pkg/app/handler/packages/utils.go28
1 files changed, 12 insertions, 16 deletions
diff --git a/pkg/app/handler/packages/utils.go b/pkg/app/handler/packages/utils.go
index 5a3af7d..423f937 100644
--- a/pkg/app/handler/packages/utils.go
+++ b/pkg/app/handler/packages/utils.go
@@ -138,33 +138,29 @@ func getParameterValue(parameterName string, r *http.Request) string {
// getPackageUseflags retrieves all local USE flags, global USE
// flags and use expands for a given package
-func getPackageUseflags(gpackage *models.Package) ([]models.Useflag, []models.Useflag, map[string][]models.Useflag) {
- var localUseflags, allGlobalUseflags, filteredGlobalUseflags []models.Useflag
- useExpands := make(map[string][]models.Useflag)
-
- if len(gpackage.Versions) == 0 {
- return localUseflags, allGlobalUseflags, useExpands
- }
-
- rawUseFlags := make([]string, len(gpackage.Versions[0].Useflags))
- for i, rawUseflag := range gpackage.Versions[0].Useflags {
- rawUseFlags[i] = strings.Replace(rawUseflag, "+", "", 1)
- }
-
+func getPackageUseflags(gpackage *models.Package) (localUseflags []models.Useflag, filteredGlobalUseflags []models.Useflag, useExpands map[string][]models.Useflag) {
+ rawUseFlags := gpackage.AllUseflags()
if len(rawUseFlags) == 0 {
- return localUseflags, allGlobalUseflags, useExpands
+ return
}
var tmp_useflags []models.Useflag
err := database.DBCon.Model(&tmp_useflags).
- Where("name in (?)", pg.In(rawUseFlags)).
+ WhereGroup(func(q *pg.Query) (*pg.Query, error) {
+ return q.Where("scope = ?", "local").Where("package = ?", gpackage.Atom), nil
+ }).
+ WhereOrGroup(func(q *pg.Query) (*pg.Query, error) {
+ return q.Where("scope != ?", "local").Where("name in (?)", pg.In(rawUseFlags)), nil
+ }).
Order("name ASC").
Select()
if err != nil && err != pg.ErrNoRows {
slog.Error("Failed fetching use flags", slog.Any("err", err))
- return localUseflags, allGlobalUseflags, useExpands
+ return
}
+ var allGlobalUseflags []models.Useflag
+ useExpands = make(map[string][]models.Useflag)
for _, useflag := range tmp_useflags {
if useflag.Scope == "global" {
allGlobalUseflags = append(allGlobalUseflags, useflag)