Files
yay/pkg/sync/post_install.go
Jo 70d7a0f0a8 fix(lua): Reduce event size of PostInstall and SearchFilter hooks (#2871)
* remove fields from events that might not be needed yet

* reduce event size
2026-06-17 21:40:02 +02:00

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