summaryrefslogtreecommitdiffhomepage
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/luci-base/ucode/runtime.uc22
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)}`;