#!/opt/lnxall_app/bin/lua

local invoker = require "invoker"

local g_config_file = '/etc/ubuslog.json'
local g_md5_file = '/tmp/.ubuslog.md5'


local function main_func()
	local rval = invoker.invoke(0, 'lua', '/opt/lnxall_app/bin/ubuslog-assembler.lua')
	if rval ~= 0 then
		io.stderr:write('Error, failed to assemble routes\n')
		io.stderr:flush()
		return false
	end

	local prev_md5 = invoker.readfile(g_md5_file)
	if type(prev_md5) ~= 'string' or #prev_md5 == 0 then
		io.stderr:write('Error, cannot get previos md5\n')
		io.stderr:flush()
		return false
	end

	local _, new_md5 = invoker.invoke(invoker.OUTPUT, 'md5sum', g_config_file)
	if type(new_md5) ~= 'string' or #new_md5 == 0 then
		io.stderr:write(string.format('Error, please check whether %s exists\n', g_config_file))
		io.stderr:flush()
		return false
	end
	new_md5 = string.match(new_md5, '%S+')

	if not string.find(new_md5, prev_md5) then
		io.stdout:write('Reload ubuslog configuration . . .\n')
		io.stdout:flush()
		invoker.invoke(0, 'systemctl', 'restart', 'ubuslog.service', 'tmpubuslog.service')

		local fp = io.open(g_md5_file, 'wb')
		fp:write(new_md5)
		fp:close()
	else
		io.stdout:write('Configuration has not changed\n')
		io.stdout:flush()
	end
	return true
end
main_func()
