diff --git a/.luacheckrc b/.luacheckrc index b4d086c..9ad6553 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -6,6 +6,7 @@ exclude_files = { "worldeditadditions/utils/bit.lua" } +files["worldeditadditions_core/register/check.lua"] = { read_globals = { "table" } } ignore = { "631", "61[124]", diff --git a/worldeditadditions_core/register/check.lua b/worldeditadditions_core/register/check.lua index 1dfb87b..8aeb684 100644 --- a/worldeditadditions_core/register/check.lua +++ b/worldeditadditions_core/register/check.lua @@ -1,14 +1,37 @@ -function worldeditadditions_core.register_command(def) +function worldeditadditions_core.register_command(name, def) + -- TODO: Implement our own deep copy function here + -- Depending on a Minetest-specific addition here makes be very uneasy + -- ...especially since it's not obvious at first glance that this isn't a + -- core feature provided by Lua itself local def = table.copy(def) - assert(name and #name > 0) - assert(def.privs) + + assert( + def.privs, + "Error: No privileges specified in definition of command '"..name.."'." + ) + def.require_pos = def.require_pos or 0 + assert(def.require_pos >= 0 and def.require_pos < 3) + if def.params == "" and not def.parse then def.parse = function(params_text) return true end else - assert(def.parse) + assert( + def.parse, + "Error: No parameter parsing function specified, even though parameters were specified in definition of command '"..name.."'." + ) end - assert(def.nodes_needed == nil or type(def.nodes_needed) == "function") - assert(def.func) + + assert( + def.nodes_needed == nil or type(def.nodes_needed) == "function", + "Error: nodes_needed must be either not specified or be a function that returns the number of nodes that could potentially be changed for a given set fo parsed parameters in definition of command '"..name.."'" + ) + + assert( + def.func, + "Error: 'func' is not defined. It must be defined to the function to call to run the command in definition of command '"..name.."'." + ) + + return def end diff --git a/worldeditadditions_core/register/handler.lua b/worldeditadditions_core/register/handler.lua index b80c4a6..a9beb9a 100644 --- a/worldeditadditions_core/register/handler.lua +++ b/worldeditadditions_core/register/handler.lua @@ -1,5 +1,5 @@ function worldeditadditions_core.chatcommand_handler(cmd_name, name, param) - local def = assert(worldedit.registered_commands[cmd_name]) + local def = assert(worldedit.registered_commands[cmd_name], "Error: Failed to locate worldedit command definition for command '"..name.."' (this is probably a bug).") if def.require_pos == 2 then local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name] diff --git a/worldeditadditions_core/register/override.lua b/worldeditadditions_core/register/override.lua index bf7bb4e..816ea9c 100644 --- a/worldeditadditions_core/register/override.lua +++ b/worldeditadditions_core/register/override.lua @@ -1,6 +1,6 @@ local we_c = worldeditadditions_core function we_c.override_command(name, def) - local success, def = we_c.check(def) + local success, def = we_c.check(name, def) if not success then return false, def diff --git a/worldeditadditions_core/register/register.lua b/worldeditadditions_core/register/register.lua index 2a93120..6efe21c 100644 --- a/worldeditadditions_core/register/register.lua +++ b/worldeditadditions_core/register/register.lua @@ -1,6 +1,6 @@ local we_c = worldeditadditions_core function we_c.register_command(name, def) - local success, def = we_c.check(def) + local success, def = we_c.check(name, def) if not success then return false, def diff --git a/worldeditadditions_core/worldedit/init.lua b/worldeditadditions_core/worldedit/init.lua index fc4fd8b..f43eb44 100644 --- a/worldeditadditions_core/worldedit/init.lua +++ b/worldeditadditions_core/worldedit/init.lua @@ -1,5 +1,5 @@ ---- WorldEdit dependencies for WorldEditAdditions +--- WorldEdit shim just in case WorldEdit doesn't exist worldedit = { - registered_commands = {} + registered_commands = { } }