Compare commits

..

No commits in common. "71968bbe135eab7f95f586884b12ec87f5679df4" and "8f94b61a0ea5e1fabf86e4bb7900994b91491852" have entirely different histories.

7 changed files with 45 additions and 68 deletions

@ -193,7 +193,3 @@ func (c *ALRConfig) RootCmd(ctx context.Context) string {
})
return c.cfg.RootCmd
}
func (c *ALRConfig) Save(f *os.File) error {
return toml.NewEncoder(f).Encode(c.cfg)
}

@ -323,11 +323,11 @@ msgstr ""
msgid "ERROR"
msgstr ""
#: list.go:41
#: list.go:40
msgid "List ALR repo packages"
msgstr ""
#: list.go:92
#: list.go:91
msgid "Error listing installed packages"
msgstr ""

@ -335,11 +335,11 @@ msgstr "%s %s загружается — %s/с\n"
msgid "ERROR"
msgstr "ОШИБКА"
#: list.go:41
#: list.go:40
msgid "List ALR repo packages"
msgstr "Список пакетов репозитория ALR"
#: list.go:92
#: list.go:91
msgid "Error listing installed packages"
msgstr "Ошибка при составлении списка установленных пакетов"

16
list.go

@ -30,7 +30,6 @@ import (
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
database "gitea.plemya-x.ru/Plemya-x/ALR/internal/db"
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/build"
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/manager"
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/repos"
)
@ -79,7 +78,7 @@ func ListCmd() *cli.Command {
}
defer result.Close()
installedAlrPackages := map[string]string{}
var installed map[string]string
if c.Bool("installed") {
mgr := manager.Detect()
if mgr == nil {
@ -87,20 +86,11 @@ func ListCmd() *cli.Command {
os.Exit(1)
}
installed, err := mgr.ListInstalled(&manager.Opts{AsRoot: false})
installed, err = mgr.ListInstalled(&manager.Opts{AsRoot: false})
if err != nil {
slog.Error(gotext.Get("Error listing installed packages"), "err", err)
os.Exit(1)
}
for pkgName, version := range installed {
matches := build.RegexpALRPackageName.FindStringSubmatch(pkgName)
if matches != nil {
packageName := matches[build.RegexpALRPackageName.SubexpIndex("package")]
repoName := matches[build.RegexpALRPackageName.SubexpIndex("repo")]
installedAlrPackages[fmt.Sprintf("%s/%s", repoName, packageName)] = version
}
}
}
for result.Next() {
@ -116,7 +106,7 @@ func ListCmd() *cli.Command {
version := pkg.Version
if c.Bool("installed") {
instVersion, ok := installedAlrPackages[fmt.Sprintf("%s/%s", pkg.Repository, pkg.Name)]
instVersion, ok := installed[pkg.Name]
if !ok {
continue
} else {

@ -21,7 +21,6 @@ import (
"io"
"os"
"path/filepath"
"regexp"
"runtime"
"slices"
"strconv"
@ -171,8 +170,6 @@ func buildContents(vars *types.BuildVars, dirs types.Directories, preferedConten
return contents, nil
}
var RegexpALRPackageName = regexp.MustCompile(`^(?P<package>[^+]+)\+alr-(?P<repo>.+)$`)
func getBasePkgInfo(vars *types.BuildVars, info *distro.OSRelease, opts *types.BuildOpts) *nfpm.Info {
return &nfpm.Info{
Name: fmt.Sprintf("%s+alr-%s", vars.Name, opts.Repository),

@ -83,7 +83,7 @@ func AddRepoCmd() *cli.Command {
os.Exit(1)
}
err = cfg.Save(cfgFl)
err = toml.NewEncoder(cfgFl).Encode(cfg)
if err != nil {
slog.Error(gotext.Get("Error encoding config"), "err", err)
os.Exit(1)

@ -29,6 +29,7 @@ import (
"github.com/urfave/cli/v2"
"go.elara.ws/vercmp"
"golang.org/x/exp/maps"
"golang.org/x/exp/slices"
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
database "gitea.plemya-x.ru/Plemya-x/ALR/internal/db"
@ -38,7 +39,6 @@ import (
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/distro"
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/manager"
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/repos"
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/search"
)
func UpgradeCmd() *cli.Command {
@ -85,7 +85,7 @@ func UpgradeCmd() *cli.Command {
}
}
updates, err := checkForUpdates(ctx, mgr, cfg, db, rs, info)
updates, err := checkForUpdates(ctx, mgr, cfg, rs, info)
if err != nil {
slog.Error(gotext.Get("Error checking for updates"), "err", err)
os.Exit(1)
@ -121,7 +121,6 @@ func checkForUpdates(
ctx context.Context,
mgr manager.Manager,
cfg *config.ALRConfig,
db *database.Database,
rs *repos.Repos,
info *distro.OSRelease,
) ([]database.Package, error) {
@ -131,27 +130,25 @@ func checkForUpdates(
}
pkgNames := maps.Keys(installed)
s := search.New(db)
var out []database.Package
for _, pkgName := range pkgNames {
matches := build.RegexpALRPackageName.FindStringSubmatch(pkgName)
if matches != nil {
packageName := matches[build.RegexpALRPackageName.SubexpIndex("package")]
repoName := matches[build.RegexpALRPackageName.SubexpIndex("repo")]
pkgs, err := s.Search(
ctx,
search.NewSearchOptions().
WithName(packageName).
WithRepository(repoName).
Build(),
)
found, _, err := rs.FindPkgs(ctx, pkgNames)
if err != nil {
return nil, err
}
var out []database.Package
for pkgName, pkgs := range found {
if slices.Contains(cfg.IgnorePkgUpdates(ctx), pkgName) {
continue
}
if len(pkgs) > 1 {
// Puts the element with the highest version first
slices.SortFunc(pkgs, func(a, b database.Package) int {
return vercmp.Compare(a.Version, b.Version)
})
}
// First element is the package we want to install
pkg := pkgs[0]
repoVer := pkg.Version
@ -170,8 +167,5 @@ func checkForUpdates(
out = append(out, pkg)
}
}
}
return out, nil
}