mirror of
https://github.com/aljazceru/lightning.git
synced 2026-01-04 14:54:26 +01:00
libplugin: allow commands and options to mark themselves deprecated.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -593,6 +593,7 @@ handle_getmanifest(struct command *getmanifest_cmd,
|
||||
json_add_string(params, "name", p->opts[i].name);
|
||||
json_add_string(params, "type", p->opts[i].type);
|
||||
json_add_string(params, "description", p->opts[i].description);
|
||||
json_add_bool(params, "deprecated", p->opts[i].deprecated);
|
||||
json_object_end(params);
|
||||
}
|
||||
json_array_end(params);
|
||||
@@ -607,6 +608,7 @@ handle_getmanifest(struct command *getmanifest_cmd,
|
||||
if (p->commands[i].long_description)
|
||||
json_add_string(params, "long_description",
|
||||
p->commands[i].long_description);
|
||||
json_add_bool(params, "deprecated", p->commands[i].deprecated);
|
||||
json_object_end(params);
|
||||
}
|
||||
json_array_end(params);
|
||||
@@ -1260,6 +1262,7 @@ static struct plugin *new_plugin(const tal_t *ctx,
|
||||
o.description = va_arg(ap, const char *);
|
||||
o.handle = va_arg(ap, char *(*)(const char *str, void *arg));
|
||||
o.arg = va_arg(ap, void *);
|
||||
o.deprecated = va_arg(ap, int); /* bool gets promoted! */
|
||||
tal_arr_expand(&p->opts, o);
|
||||
}
|
||||
|
||||
|
||||
@@ -64,6 +64,8 @@ struct plugin_command {
|
||||
struct command_result *(*handle)(struct command *cmd,
|
||||
const char *buf,
|
||||
const jsmntok_t *params);
|
||||
/* If true, this command *disabled* if allow-deprecated-apis = false */
|
||||
bool deprecated;
|
||||
};
|
||||
|
||||
/* Create an array of these, one for each --option you support. */
|
||||
@@ -73,6 +75,8 @@ struct plugin_option {
|
||||
const char *description;
|
||||
char *(*handle)(const char *str, void *arg);
|
||||
void *arg;
|
||||
/* If true, this options *disabled* if allow-deprecated-apis = false */
|
||||
bool deprecated;
|
||||
};
|
||||
|
||||
/* Create an array of these, one for each notification you subscribe to. */
|
||||
@@ -229,12 +233,19 @@ struct plugin_timer *plugin_timer_(struct plugin *p,
|
||||
void plugin_log(struct plugin *p, enum log_level l, const char *fmt, ...) PRINTF_FMT(3, 4);
|
||||
|
||||
/* Macro to define arguments */
|
||||
#define plugin_option(name, type, description, set, arg) \
|
||||
#define plugin_option_(name, type, description, set, arg, deprecated) \
|
||||
(name), \
|
||||
(type), \
|
||||
(description), \
|
||||
typesafe_cb_preargs(char *, void *, (set), (arg), const char *), \
|
||||
(arg)
|
||||
(arg), \
|
||||
(deprecated)
|
||||
|
||||
#define plugin_option(name, type, description, set, arg) \
|
||||
plugin_option_((name), (type), (description), (set), (arg), false)
|
||||
|
||||
#define plugin_option_deprecated(name, type, description, set, arg) \
|
||||
plugin_option_((name), (type), (description), (set), (arg), true)
|
||||
|
||||
/* Standard helpers */
|
||||
char *u64_option(const char *arg, u64 *i);
|
||||
|
||||
Reference in New Issue
Block a user