forked from Plemya-x/ALR
Compare commits
No commits in common. "71968bbe135eab7f95f586884b12ec87f5679df4" and "8f94b61a0ea5e1fabf86e4bb7900994b91491852" have entirely different histories.
71968bbe13
...
8f94b61a0e
@ -193,7 +193,3 @@ func (c *ALRConfig) RootCmd(ctx context.Context) string {
|
|||||||
})
|
})
|
||||||
return c.cfg.RootCmd
|
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"
|
msgid "ERROR"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: list.go:41
|
#: list.go:40
|
||||||
msgid "List ALR repo packages"
|
msgid "List ALR repo packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: list.go:92
|
#: list.go:91
|
||||||
msgid "Error listing installed packages"
|
msgid "Error listing installed packages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -335,11 +335,11 @@ msgstr "%s %s загружается — %s/с\n"
|
|||||||
msgid "ERROR"
|
msgid "ERROR"
|
||||||
msgstr "ОШИБКА"
|
msgstr "ОШИБКА"
|
||||||
|
|
||||||
#: list.go:41
|
#: list.go:40
|
||||||
msgid "List ALR repo packages"
|
msgid "List ALR repo packages"
|
||||||
msgstr "Список пакетов репозитория ALR"
|
msgstr "Список пакетов репозитория ALR"
|
||||||
|
|
||||||
#: list.go:92
|
#: list.go:91
|
||||||
msgid "Error listing installed packages"
|
msgid "Error listing installed packages"
|
||||||
msgstr "Ошибка при составлении списка установленных пакетов"
|
msgstr "Ошибка при составлении списка установленных пакетов"
|
||||||
|
|
||||||
|
16
list.go
16
list.go
@ -30,7 +30,6 @@ import (
|
|||||||
|
|
||||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
|
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
|
||||||
database "gitea.plemya-x.ru/Plemya-x/ALR/internal/db"
|
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/manager"
|
||||||
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/repos"
|
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/repos"
|
||||||
)
|
)
|
||||||
@ -79,7 +78,7 @@ func ListCmd() *cli.Command {
|
|||||||
}
|
}
|
||||||
defer result.Close()
|
defer result.Close()
|
||||||
|
|
||||||
installedAlrPackages := map[string]string{}
|
var installed map[string]string
|
||||||
if c.Bool("installed") {
|
if c.Bool("installed") {
|
||||||
mgr := manager.Detect()
|
mgr := manager.Detect()
|
||||||
if mgr == nil {
|
if mgr == nil {
|
||||||
@ -87,20 +86,11 @@ func ListCmd() *cli.Command {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
installed, err := mgr.ListInstalled(&manager.Opts{AsRoot: false})
|
installed, err = mgr.ListInstalled(&manager.Opts{AsRoot: false})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error(gotext.Get("Error listing installed packages"), "err", err)
|
slog.Error(gotext.Get("Error listing installed packages"), "err", err)
|
||||||
os.Exit(1)
|
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() {
|
for result.Next() {
|
||||||
@ -116,7 +106,7 @@ func ListCmd() *cli.Command {
|
|||||||
|
|
||||||
version := pkg.Version
|
version := pkg.Version
|
||||||
if c.Bool("installed") {
|
if c.Bool("installed") {
|
||||||
instVersion, ok := installedAlrPackages[fmt.Sprintf("%s/%s", pkg.Repository, pkg.Name)]
|
instVersion, ok := installed[pkg.Name]
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
|
@ -21,7 +21,6 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
|
||||||
"runtime"
|
"runtime"
|
||||||
"slices"
|
"slices"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -171,8 +170,6 @@ func buildContents(vars *types.BuildVars, dirs types.Directories, preferedConten
|
|||||||
return contents, nil
|
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 {
|
func getBasePkgInfo(vars *types.BuildVars, info *distro.OSRelease, opts *types.BuildOpts) *nfpm.Info {
|
||||||
return &nfpm.Info{
|
return &nfpm.Info{
|
||||||
Name: fmt.Sprintf("%s+alr-%s", vars.Name, opts.Repository),
|
Name: fmt.Sprintf("%s+alr-%s", vars.Name, opts.Repository),
|
||||||
|
2
repo.go
2
repo.go
@ -83,7 +83,7 @@ func AddRepoCmd() *cli.Command {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = cfg.Save(cfgFl)
|
err = toml.NewEncoder(cfgFl).Encode(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error(gotext.Get("Error encoding config"), "err", err)
|
slog.Error(gotext.Get("Error encoding config"), "err", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
40
upgrade.go
40
upgrade.go
@ -29,6 +29,7 @@ import (
|
|||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
"go.elara.ws/vercmp"
|
"go.elara.ws/vercmp"
|
||||||
"golang.org/x/exp/maps"
|
"golang.org/x/exp/maps"
|
||||||
|
"golang.org/x/exp/slices"
|
||||||
|
|
||||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
|
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
|
||||||
database "gitea.plemya-x.ru/Plemya-x/ALR/internal/db"
|
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/distro"
|
||||||
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/manager"
|
"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/repos"
|
||||||
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/search"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func UpgradeCmd() *cli.Command {
|
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 {
|
if err != nil {
|
||||||
slog.Error(gotext.Get("Error checking for updates"), "err", err)
|
slog.Error(gotext.Get("Error checking for updates"), "err", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
@ -121,7 +121,6 @@ func checkForUpdates(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
mgr manager.Manager,
|
mgr manager.Manager,
|
||||||
cfg *config.ALRConfig,
|
cfg *config.ALRConfig,
|
||||||
db *database.Database,
|
|
||||||
rs *repos.Repos,
|
rs *repos.Repos,
|
||||||
info *distro.OSRelease,
|
info *distro.OSRelease,
|
||||||
) ([]database.Package, error) {
|
) ([]database.Package, error) {
|
||||||
@ -131,27 +130,25 @@ func checkForUpdates(
|
|||||||
}
|
}
|
||||||
|
|
||||||
pkgNames := maps.Keys(installed)
|
pkgNames := maps.Keys(installed)
|
||||||
|
found, _, err := rs.FindPkgs(ctx, pkgNames)
|
||||||
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(),
|
|
||||||
)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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]
|
pkg := pkgs[0]
|
||||||
|
|
||||||
repoVer := pkg.Version
|
repoVer := pkg.Version
|
||||||
@ -170,8 +167,5 @@ func checkForUpdates(
|
|||||||
out = append(out, pkg)
|
out = append(out, pkg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user