diff --git a/package/gluon-config-mode-core/luasrc/lib/gluon/web/model/gluon-config-mode/wizard.lua b/package/gluon-config-mode-core/luasrc/lib/gluon/web/model/gluon-config-mode/wizard.lua index 6cafb0e23f1561e06bf06cffec5c278e3b0508ab..35b605d28288fc85087ed087daa4095fb9b8ef1d 100644 --- a/package/gluon-config-mode-core/luasrc/lib/gluon/web/model/gluon-config-mode/wizard.lua +++ b/package/gluon-config-mode-core/luasrc/lib/gluon/web/model/gluon-config-mode/wizard.lua @@ -28,11 +28,18 @@ local s = f:section(Section) s.template = "gluon/config-mode/welcome" local commit = {'gluon-setup-mode'} +local run = {} for _, w in ipairs(wizard) do for _, c in ipairs(w(f, uci) or {}) do - if not util.contains(commit, c) then - table.insert(commit, c) + if type(c) == 'string' then + if not util.contains(commit, c) then + table.insert(commit, c) + end + elseif type(c) == 'function' then + table.insert(run, c) + else + error('invalid wizard module return') end end end @@ -45,6 +52,9 @@ function f:write() for _, c in ipairs(commit) do uci:commit(c) end + for _, r in ipairs(run) do + r() + end f.template = "gluon/config-mode/reboot" f.hidenav = true