Добавлена трансляция коротких имён ALR-пакетов при удалении
All checks were successful
Pre-commit / pre-commit (pull_request) Successful in 3m50s
All checks were successful
Pre-commit / pre-commit (pull_request) Successful in 3m50s
- Команда rm теперь автоматически преобразует короткое имя (например yandex-disk-ui) в полное (yandex-disk-ui+ALR-repo) - Если ALR-пакет не найден, имя передаётся как есть в системный менеджер пакетов
This commit is contained in:
38
install.go
38
install.go
@@ -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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user