diff --git a/src/commands.def b/src/commands.def index c59cb01dc1..536d9fe4b1 100644 --- a/src/commands.def +++ b/src/commands.def @@ -5330,6 +5330,28 @@ struct COMMAND_ARG SCRIPT_LOAD_Args[] = { {MAKE_ARG("script",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)}, }; +/********** SCRIPT SHOW ********************/ + +#ifndef SKIP_CMD_HISTORY_TABLE +/* SCRIPT SHOW history */ +#define SCRIPT_SHOW_History NULL +#endif + +#ifndef SKIP_CMD_TIPS_TABLE +/* SCRIPT SHOW tips */ +#define SCRIPT_SHOW_Tips NULL +#endif + +#ifndef SKIP_CMD_KEY_SPECS_TABLE +/* SCRIPT SHOW key specs */ +#define SCRIPT_SHOW_Keyspecs NULL +#endif + +/* SCRIPT SHOW argument table */ +struct COMMAND_ARG SCRIPT_SHOW_Args[] = { +{MAKE_ARG("sha1",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE,0,NULL)}, +}; + /* SCRIPT command table */ struct COMMAND_STRUCT SCRIPT_Subcommands[] = { {MAKE_CMD("debug","Sets the debug mode of server-side Lua scripts.","O(1)","3.2.0",CMD_DOC_NONE,NULL,NULL,"scripting",COMMAND_GROUP_SCRIPTING,SCRIPT_DEBUG_History,0,SCRIPT_DEBUG_Tips,0,scriptCommand,3,CMD_NOSCRIPT,ACL_CATEGORY_SCRIPTING,SCRIPT_DEBUG_Keyspecs,0,NULL,1),.args=SCRIPT_DEBUG_Args}, @@ -5338,6 +5360,7 @@ struct COMMAND_STRUCT SCRIPT_Subcommands[] = { {MAKE_CMD("help","Returns helpful text about the different subcommands.","O(1)","5.0.0",CMD_DOC_NONE,NULL,NULL,"scripting",COMMAND_GROUP_SCRIPTING,SCRIPT_HELP_History,0,SCRIPT_HELP_Tips,0,scriptCommand,2,CMD_LOADING|CMD_STALE,ACL_CATEGORY_SCRIPTING,SCRIPT_HELP_Keyspecs,0,NULL,0)}, {MAKE_CMD("kill","Terminates a server-side Lua script during execution.","O(1)","2.6.0",CMD_DOC_NONE,NULL,NULL,"scripting",COMMAND_GROUP_SCRIPTING,SCRIPT_KILL_History,0,SCRIPT_KILL_Tips,2,scriptCommand,2,CMD_NOSCRIPT|CMD_ALLOW_BUSY,ACL_CATEGORY_SCRIPTING,SCRIPT_KILL_Keyspecs,0,NULL,0)}, {MAKE_CMD("load","Loads a server-side Lua script to the script cache.","O(N) with N being the length in bytes of the script body.","2.6.0",CMD_DOC_NONE,NULL,NULL,"scripting",COMMAND_GROUP_SCRIPTING,SCRIPT_LOAD_History,0,SCRIPT_LOAD_Tips,2,scriptCommand,3,CMD_NOSCRIPT|CMD_STALE,ACL_CATEGORY_SCRIPTING,SCRIPT_LOAD_Keyspecs,0,NULL,1),.args=SCRIPT_LOAD_Args}, +{MAKE_CMD("show","Show server-side Lua script in the script cache.","O(1).","8.0.0",CMD_DOC_NONE,NULL,NULL,"scripting",COMMAND_GROUP_SCRIPTING,SCRIPT_SHOW_History,0,SCRIPT_SHOW_Tips,0,scriptCommand,3,CMD_NOSCRIPT,ACL_CATEGORY_SCRIPTING,SCRIPT_SHOW_Keyspecs,0,NULL,1),.args=SCRIPT_SHOW_Args}, {0} }; diff --git a/src/commands/script-show.json b/src/commands/script-show.json new file mode 100644 index 0000000000..f22fa29675 --- /dev/null +++ b/src/commands/script-show.json @@ -0,0 +1,27 @@ +{ + "SHOW": { + "summary": "Show server-side Lua script in the script cache.", + "complexity": "O(1).", + "group": "scripting", + "since": "8.0.0", + "arity": 3, + "container": "SCRIPT", + "function": "scriptCommand", + "command_flags": [ + "NOSCRIPT" + ], + "acl_categories": [ + "SCRIPTING" + ], + "arguments": [ + { + "name": "sha1", + "type": "string" + } + ], + "reply_schema": { + "description": "Lua script if sha1 hash exists in script cache.", + "type": "string" + } + } +} diff --git a/src/eval.c b/src/eval.c index 464c8ef487..c17594ad29 100644 --- a/src/eval.c +++ b/src/eval.c @@ -675,6 +675,8 @@ void scriptCommand(client *c) { " Kill the currently executing Lua script.", "LOAD