mirror of
https://github.com/Jguer/yay.git
synced 2026-07-16 17:48:07 -04:00
64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
package sync
|
|
|
|
import (
|
|
"maps"
|
|
"slices"
|
|
|
|
"github.com/Jguer/yay/v13/pkg/dep"
|
|
settingslua "github.com/Jguer/yay/v13/pkg/settings/lua"
|
|
)
|
|
|
|
// postInstallEvent flattens the resolved topo layers into the PostInstall payload.
|
|
func postInstallEvent(targets []map[string]*dep.InstallInfo) *settingslua.PostInstallEvent {
|
|
merged := map[string]*dep.InstallInfo{}
|
|
for _, layer := range targets {
|
|
maps.Copy(merged, layer)
|
|
}
|
|
|
|
names := slices.Sorted(maps.Keys(merged))
|
|
|
|
packages := make([]settingslua.PostInstallPackage, 0, len(names))
|
|
for _, name := range names {
|
|
info := merged[name]
|
|
packages = append(packages, settingslua.PostInstallPackage{
|
|
Name: name,
|
|
Version: info.Version,
|
|
LocalVersion: info.LocalVersion,
|
|
Source: luaSource(info.Source),
|
|
Reason: luaReason(info.Reason),
|
|
})
|
|
}
|
|
|
|
return &settingslua.PostInstallEvent{Packages: packages}
|
|
}
|
|
|
|
func luaSource(source dep.Source) string {
|
|
switch source {
|
|
case dep.AUR:
|
|
return "aur"
|
|
case dep.Sync:
|
|
return "sync"
|
|
case dep.Local:
|
|
return "local"
|
|
case dep.SrcInfo:
|
|
return "srcinfo"
|
|
default:
|
|
return "missing"
|
|
}
|
|
}
|
|
|
|
func luaReason(reason dep.Reason) string {
|
|
switch reason {
|
|
case dep.Explicit:
|
|
return "explicit"
|
|
case dep.Dep:
|
|
return "dependency"
|
|
case dep.MakeDep:
|
|
return "make_dependency"
|
|
case dep.CheckDep:
|
|
return "check_dependency"
|
|
default:
|
|
return "unknown"
|
|
}
|
|
}
|