From fffeb010d7d544f7cfd8603b519460188c46fd46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=A5=D1=80?= =?UTF-8?q?=D0=B0=D0=BC=D1=8B=D1=87=D0=AA=20=D0=A5=D1=80=D0=B0=D0=BC=D0=BE?= =?UTF-8?q?=D0=B2?= Date: Mon, 23 Feb 2026 21:43:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=82=D1=80=D0=B0=D0=BD=D1=81=D0=BB=D1=8F=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BA=D0=BE=D1=80=D0=BE=D1=82=D0=BA=D0=B8=D1=85?= =?UTF-8?q?=20=D0=B8=D0=BC=D1=91=D0=BD=20ALR-=D0=BF=D0=B0=D0=BA=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=20=D0=BF=D1=80=D0=B8=20=D1=83=D0=B4=D0=B0?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Команда rm теперь автоматически преобразует короткое имя (например yandex-disk-ui) в полное (yandex-disk-ui+ALR-repo) - Если ALR-пакет не найден, имя передаётся как есть в системный менеджер пакетов --- install.go | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/install.go b/install.go index 0aeb876..972bc4c 100644 --- a/install.go +++ b/install.go @@ -228,9 +228,15 @@ func RemoveCmd() *cli.Command { } defer deps.Defer() + // Транслируем короткие имена ALR-пакетов в полные (name+repo) + resolvedPkgs, err := resolveInstalledALRNames(deps.Manager, c.Args().Slice()) + if err != nil { + return cliutils.FormatCliExit(gotext.Get("Error removing packages"), err) + } + if err := deps.Manager.Remove(&manager.Opts{ NoConfirm: !c.Bool("interactive"), - }, c.Args().Slice()...); err != nil { + }, resolvedPkgs...); err != nil { return cliutils.FormatCliExit(gotext.Get("Error removing packages"), err) } @@ -238,3 +244,33 @@ func RemoveCmd() *cli.Command { }), } } + +// resolveInstalledALRNames транслирует короткие имена пакетов в полные имена ALR (name+repo). +// Если ALR-пакет с таким именем не установлен, имя передаётся как есть. +func resolveInstalledALRNames(mgr manager.Manager, names []string) ([]string, error) { + installed, err := mgr.ListInstalled(nil) + if err != nil { + return nil, err + } + + // Строим карту: короткое имя → полное имя (name+repo) + shortToFull := make(map[string]string) + for fullName := range installed { + matches := build.RegexpALRPackageName.FindStringSubmatch(fullName) + if matches != nil { + pkgName := matches[build.RegexpALRPackageName.SubexpIndex("package")] + shortToFull[pkgName] = fullName + } + } + + resolved := make([]string, len(names)) + for i, name := range names { + if fullName, ok := shortToFull[name]; ok { + resolved[i] = fullName + } else { + resolved[i] = name + } + } + + return resolved, nil +} -- 2.49.1