diff options
author | Arthur Zamarin <arthurzam@gentoo.org> | 2024-03-16 23:01:04 +0200 |
---|---|---|
committer | Arthur Zamarin <arthurzam@gentoo.org> | 2024-03-16 23:01:04 +0200 |
commit | d08bb9c14e36723e7347520b4444bf52c04c5eeb (patch) | |
tree | 5fc0478e8dca75966166427aa6e6bff29c968ed6 /pkg/app | |
parent | selfcheck: fix repo path (diff) | |
download | soko-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.go | 28 |
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) |