diff --git a/src/module.c b/src/module.c index aea28bcbe..38f85ec04 100644 --- a/src/module.c +++ b/src/module.c @@ -1931,6 +1931,7 @@ static struct redisCommandArg *moduleCopyCommandArgs(RedisModuleCommandArg *args if (arg->token) realargs[j].token = zstrdup(arg->token); if (arg->summary) realargs[j].summary = zstrdup(arg->summary); if (arg->since) realargs[j].since = zstrdup(arg->since); + if (arg->deprecated_since) realargs[j].deprecated_since = zstrdup(arg->deprecated_since); realargs[j].flags = moduleConvertArgFlags(arg->flags); if (arg->subargs) realargs[j].subargs = moduleCopyCommandArgs(arg->subargs, version); } @@ -10941,6 +10942,7 @@ int moduleFreeCommand(struct RedisModule *module, struct redisCommand *cmd) { } zfree((char *)cmd->summary); zfree((char *)cmd->since); + zfree((char *)cmd->deprecated_since); zfree((char *)cmd->complexity); if (cmd->latency_histogram) { hdr_close(cmd->latency_histogram); diff --git a/src/redismodule.h b/src/redismodule.h index 98844399f..954a4c7c6 100644 --- a/src/redismodule.h +++ b/src/redismodule.h @@ -322,6 +322,7 @@ typedef struct RedisModuleCommandArg { const char *summary; const char *since; int flags; /* The REDISMODULE_CMD_ARG_* macros. */ + const char *deprecated_since; struct RedisModuleCommandArg *subargs; } RedisModuleCommandArg; diff --git a/src/server.c b/src/server.c index fd5c84b49..8c073684a 100644 --- a/src/server.c +++ b/src/server.c @@ -4317,6 +4317,7 @@ void addReplyCommandArgList(client *c, struct redisCommandArg *args, int num_arg if (args[j].token) maplen++; if (args[j].summary) maplen++; if (args[j].since) maplen++; + if (args[j].deprecated_since) maplen++; if (args[j].flags) maplen++; if (args[j].type == ARG_TYPE_ONEOF || args[j].type == ARG_TYPE_BLOCK) maplen++; @@ -4344,6 +4345,10 @@ void addReplyCommandArgList(client *c, struct redisCommandArg *args, int num_arg addReplyBulkCString(c, "since"); addReplyBulkCString(c, args[j].since); } + if (args[j].deprecated_since) { + addReplyBulkCString(c, "deprecated_since"); + addReplyBulkCString(c, args[j].deprecated_since); + } if (args[j].flags) { addReplyBulkCString(c, "flags"); addReplyFlagsForArg(c, args[j].flags); diff --git a/src/server.h b/src/server.h index 66f03c054..37f7f3d7e 100644 --- a/src/server.h +++ b/src/server.h @@ -2042,6 +2042,7 @@ typedef struct redisCommandArg { const char *summary; const char *since; int flags; + const char *deprecated_since; struct redisCommandArg *subargs; /* runtime populated data */ int num_args; diff --git a/utils/generate-command-code.py b/utils/generate-command-code.py index 2a4bd5ccc..c5c08e196 100755 --- a/utils/generate-command-code.py +++ b/utils/generate-command-code.py @@ -175,6 +175,8 @@ class Argument(object): get_optional_desc_string(self.desc, "since"), _flags_code(), ) + if "deprecated_since" in self.desc: + s += ",.deprecated_since=\"%s\"" % self.desc["deprecated_since"] if self.subargs: s += ",.subargs=%s" % self.subarg_table_name()