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
All checks were successful
Create Release / changelog (push) Successful in 2m28s
Reviewed-on: #143
This commit was merged in pull request #143.
This commit is contained in:
38
install.go
38
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user