forked from Plemya-x/ALR
		
	fix: fix list and upgrade commands with new naming
This commit is contained in:
		| @@ -323,11 +323,11 @@ msgstr "" | |||||||
| msgid "ERROR" | msgid "ERROR" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: list.go:40 | #: list.go:41 | ||||||
| msgid "List ALR repo packages" | msgid "List ALR repo packages" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: list.go:91 | #: list.go:92 | ||||||
| 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:40 | #: list.go:41 | ||||||
| msgid "List ALR repo packages" | msgid "List ALR repo packages" | ||||||
| msgstr "Список пакетов репозитория ALR" | msgstr "Список пакетов репозитория ALR" | ||||||
|  |  | ||||||
| #: list.go:91 | #: list.go:92 | ||||||
| msgid "Error listing installed packages" | msgid "Error listing installed packages" | ||||||
| msgstr "Ошибка при составлении списка установленных пакетов" | msgstr "Ошибка при составлении списка установленных пакетов" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								list.go
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								list.go
									
									
									
									
									
								
							| @@ -30,6 +30,7 @@ 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" | ||||||
| ) | ) | ||||||
| @@ -78,7 +79,7 @@ func ListCmd() *cli.Command { | |||||||
| 			} | 			} | ||||||
| 			defer result.Close() | 			defer result.Close() | ||||||
|  |  | ||||||
| 			var installed map[string]string | 			installedAlrPackages := map[string]string{} | ||||||
| 			if c.Bool("installed") { | 			if c.Bool("installed") { | ||||||
| 				mgr := manager.Detect() | 				mgr := manager.Detect() | ||||||
| 				if mgr == nil { | 				if mgr == nil { | ||||||
| @@ -86,11 +87,20 @@ 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() { | ||||||
| @@ -106,7 +116,7 @@ func ListCmd() *cli.Command { | |||||||
|  |  | ||||||
| 				version := pkg.Version | 				version := pkg.Version | ||||||
| 				if c.Bool("installed") { | 				if c.Bool("installed") { | ||||||
| 					instVersion, ok := installed[pkg.Name] | 					instVersion, ok := installedAlrPackages[fmt.Sprintf("%s/%s", pkg.Repository, pkg.Name)] | ||||||
| 					if !ok { | 					if !ok { | ||||||
| 						continue | 						continue | ||||||
| 					} else { | 					} else { | ||||||
|   | |||||||
| @@ -21,6 +21,7 @@ import ( | |||||||
| 	"io" | 	"io" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" | 	"path/filepath" | ||||||
|  | 	"regexp" | ||||||
| 	"runtime" | 	"runtime" | ||||||
| 	"slices" | 	"slices" | ||||||
| 	"strconv" | 	"strconv" | ||||||
| @@ -170,6 +171,8 @@ 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), | ||||||
|   | |||||||
							
								
								
									
										74
									
								
								upgrade.go
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								upgrade.go
									
									
									
									
									
								
							| @@ -29,7 +29,6 @@ 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" | ||||||
| @@ -39,6 +38,7 @@ 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, rs, info) | 			updates, err := checkForUpdates(ctx, mgr, cfg, db, 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,6 +121,7 @@ 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) { | ||||||
| @@ -130,42 +131,47 @@ func checkForUpdates( | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	pkgNames := maps.Keys(installed) | 	pkgNames := maps.Keys(installed) | ||||||
| 	found, _, err := rs.FindPkgs(ctx, pkgNames) |  | ||||||
| 	if err != nil { | 	s := search.New(db) | ||||||
| 		return nil, err |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	var out []database.Package | 	var out []database.Package | ||||||
| 	for pkgName, pkgs := range found { | 	for _, pkgName := range pkgNames { | ||||||
| 		if slices.Contains(cfg.IgnorePkgUpdates(ctx), pkgName) { | 		matches := build.RegexpALRPackageName.FindStringSubmatch(pkgName) | ||||||
| 			continue | 		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 { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			pkg := pkgs[0] | ||||||
|  |  | ||||||
|  | 			repoVer := pkg.Version | ||||||
|  | 			releaseStr := overrides.ReleasePlatformSpecific(pkg.Release, info) | ||||||
|  |  | ||||||
|  | 			if pkg.Release != 0 && pkg.Epoch == 0 { | ||||||
|  | 				repoVer = fmt.Sprintf("%s-%s", pkg.Version, releaseStr) | ||||||
|  | 			} else if pkg.Release != 0 && pkg.Epoch != 0 { | ||||||
|  | 				repoVer = fmt.Sprintf("%d:%s-%s", pkg.Epoch, pkg.Version, releaseStr) | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			c := vercmp.Compare(repoVer, installed[pkgName]) | ||||||
|  | 			if c == 0 || c == -1 { | ||||||
|  | 				continue | ||||||
|  | 			} else if c == 1 { | ||||||
|  | 				out = append(out, pkg) | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		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 |  | ||||||
| 		releaseStr := overrides.ReleasePlatformSpecific(pkg.Release, info) |  | ||||||
|  |  | ||||||
| 		if pkg.Release != 0 && pkg.Epoch == 0 { |  | ||||||
| 			repoVer = fmt.Sprintf("%s-%s", pkg.Version, releaseStr) |  | ||||||
| 		} else if pkg.Release != 0 && pkg.Epoch != 0 { |  | ||||||
| 			repoVer = fmt.Sprintf("%d:%s-%s", pkg.Epoch, pkg.Version, releaseStr) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		c := vercmp.Compare(repoVer, installed[pkgName]) |  | ||||||
| 		if c == 0 || c == -1 { |  | ||||||
| 			continue |  | ||||||
| 		} else if c == 1 { |  | ||||||
| 			out = append(out, pkg) |  | ||||||
| 		} |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	return out, nil | 	return out, nil | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user