diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/luci-base/ucode/runtime.uc | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/modules/luci-base/ucode/runtime.uc b/modules/luci-base/ucode/runtime.uc index d02d8dd667..ed330abcc1 100644 --- a/modules/luci-base/ucode/runtime.uc +++ b/modules/luci-base/ucode/runtime.uc @@ -43,13 +43,17 @@ function format_lua_exception(ex) { } const Class = { - init_lua: function() { + init_lua: function(optional) { if (!this.L) { - this.L = this.env.dispatcher.load_luabridge().create(); - this.L.set('L', proto({ write: print }, this.env)); - this.L.invoke('require', 'luci.ucodebridge'); + let bridge = this.env.dispatcher.load_luabridge(optional); - this.env.lua_active = true; + if (bridge) { + this.L = bridge.create(); + this.L.set('L', proto({ write: print }, this.env)); + this.L.invoke('require', 'luci.ucodebridge'); + + this.env.lua_active = true; + } } return this.L; @@ -80,10 +84,12 @@ const Class = { } else { try { - let vm = this.init_lua(); - let compile = vm.get('_G', 'luci', 'ucodebridge', 'compile'); + let vm = this.init_lua(true); - compile.call(path); + if (vm) + vm.get('_G', 'luci', 'ucodebridge', 'compile').call(path); + else + return `Unable to compile '${path}' as Lua template: Unable to load Lua runtime`; } catch (lua_err) { return `Unable to compile '${path}' as Lua template: ${format_lua_exception(lua_err)}`; |