mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-10-15 07:44:01 -04:00
37 lines
876 B
Go
37 lines
876 B
Go
package sysupdate
|
|
|
|
import (
|
|
"os"
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
// Upgrades that only take effect after a reboot: kernels (linux*, kernel*, linux-image-*), systemd, glibc, firmware.
|
|
var rebootPackageRe = regexp.MustCompile(`^(linux(-[a-z0-9]+)*|linux-image-.*|kernel(-.*)?|systemd(-[a-z]+)?|glibc|libc6|linux-firmware|dracut|mesa)$`)
|
|
|
|
type RebootInfo struct {
|
|
Recommended bool `json:"recommended"`
|
|
Packages []string `json:"packages,omitempty"`
|
|
}
|
|
|
|
func rebootPackages(pkgs []Package) []string {
|
|
var out []string
|
|
for _, p := range pkgs {
|
|
if p.Repo == RepoFlatpak || p.Repo == RepoAUR {
|
|
continue
|
|
}
|
|
if rebootPackageRe.MatchString(strings.ToLower(p.Name)) {
|
|
out = append(out, p.Name)
|
|
}
|
|
}
|
|
return out
|
|
}
|
|
|
|
func bootID() string {
|
|
data, err := os.ReadFile("/proc/sys/kernel/random/boot_id")
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
return strings.TrimSpace(string(data))
|
|
}
|