42 lines
853 B
Plaintext
42 lines
853 B
Plaintext
|
#!/usr/bin/lua
|
||
|
|
||
|
local util = require 'gluon.util'
|
||
|
local unistd = require 'posix.unistd'
|
||
|
|
||
|
local state_dir = "/var/gluon/state/"
|
||
|
local check_dir = "/lib/gluon/state/check.d/"
|
||
|
|
||
|
|
||
|
local function set_flag(stateflag, state)
|
||
|
if state then
|
||
|
-- this does not modify atime
|
||
|
local flaghandle = io.open(stateflag, "w")
|
||
|
flaghandle:close()
|
||
|
else
|
||
|
os.remove(stateflag)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local function exec_check(checkpath)
|
||
|
local checkname = string.sub(checkpath, #check_dir+1)
|
||
|
local ret = os.execute(checkpath)
|
||
|
local flagfile = state_dir..checkname
|
||
|
set_flag(flagfile, 0==ret)
|
||
|
end
|
||
|
|
||
|
local function run_executable_checks()
|
||
|
for _, v in ipairs(util.glob(check_dir..'*')) do
|
||
|
if unistd.access(v, 'x') then
|
||
|
exec_check(v)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
-- ensure state path exists
|
||
|
if not unistd.access(state_dir) then
|
||
|
os.execute("mkdir -p "..state_dir)
|
||
|
end
|
||
|
|
||
|
run_executable_checks()
|