2 Commits

Author SHA1 Message Date
f7f9e82a1e Merge pull request 'Добавлена трансляция коротких имён ALR-пакетов при удалении' (#143) from fix/resolve-alr-names-on-remove into master
All checks were successful
Create Release / changelog (push) Successful in 2m28s
Reviewed-on: #143
2026-02-23 18:44:32 +00:00
fffeb010d7 Добавлена трансляция коротких имён ALR-пакетов при удалении
All checks were successful
Pre-commit / pre-commit (pull_request) Successful in 3m50s
- Команда rm теперь автоматически преобразует короткое имя (например yandex-disk-ui) в полное (yandex-disk-ui+ALR-repo)
- Если ALR-пакет не найден, имя передаётся как есть в системный менеджер пакетов
2026-02-23 21:43:23 +03:00

View File

@@ -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
}