-- This is a helper script to check installation of reboot-required 
-- packages.
-- This script runs just after changes are commited to rpm database.

filename = "/usr/lib/update-watch/reboot.list"


-- Function to extract real package name from allow-duplicated packages.
function realname(name)
    local s, e, name = string.find(name, "(.+)#")
    return name
end

-- Open list of packages that requires system reboot,
-- Then read it and store package name into local table.
local reboot = {}

file = io.open(filename, "r")
if not file then
    print("error: can't open configuration file at "..filename)
    return
else
    for line in io.lines(filename) do
        local s, e = string.find(line, "reboot:")
        if e then
            table.insert(reboot, string.sub(line, e+1))
        end
    end
end

-- Check configuration string RPM::RootDir:: to stop miss detection
-- of reboot-required packages under vbootstrap/vbuilder chroot.
-- (this string is usually blank, but vbootstrap set it)
if confget("RPM::RootDir", "default") ~= "default" then
   return
end

-- Check packages that is installed just now, and compare it with
-- extraced list, Then check if reboot is required.
local found = false

for i, pkg in pairs(pkgs_install) do
    local name = realname(pkgname(pkg))
    if not name then
        name = pkgname(pkg)
    end
    for i, name_r in pairs(reboot) do
        if name == name_r then
            found = true
        end
    end
end

if found then
    print ("Reboot required.")
    os.execute("touch /var/run/reboot-required")
end
