Добавлена трансляция коротких имён ALR-пакетов при удалении #143

Merged
xpamych merged 1 commits from fix/resolve-alr-names-on-remove into master 2026-02-23 18:44:33 +00:00

View File

@@ -228,9 +228,15 @@ func RemoveCmd() *cli.Command {
} }
defer deps.Defer() 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{ if err := deps.Manager.Remove(&manager.Opts{
NoConfirm: !c.Bool("interactive"), NoConfirm: !c.Bool("interactive"),
}, c.Args().Slice()...); err != nil { }, resolvedPkgs...); err != nil {
return cliutils.FormatCliExit(gotext.Get("Error removing packages"), err) 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
}