Plugins: allow to specify plugin option type in libplugin.c, then specify it to autoclean options
This commit is contained in:
parent
3775a32659
commit
4640d18ef0
|
@ -84,10 +84,12 @@ int main(int argc, char *argv[])
|
||||||
setup_locale();
|
setup_locale();
|
||||||
plugin_main(argv, init, commands, ARRAY_SIZE(commands),
|
plugin_main(argv, init, commands, ARRAY_SIZE(commands),
|
||||||
plugin_option("autocleaninvoice-cycle",
|
plugin_option("autocleaninvoice-cycle",
|
||||||
|
"string",
|
||||||
"Perform cleanup of expired invoices every"
|
"Perform cleanup of expired invoices every"
|
||||||
" given seconds, or do not autoclean if 0",
|
" given seconds, or do not autoclean if 0",
|
||||||
u64_option, &cycle_seconds),
|
u64_option, &cycle_seconds),
|
||||||
plugin_option("autocleaninvoice-expired-by",
|
plugin_option("autocleaninvoice-expired-by",
|
||||||
|
"string",
|
||||||
"If expired invoice autoclean enabled,"
|
"If expired invoice autoclean enabled,"
|
||||||
" invoices that have expired for at least"
|
" invoices that have expired for at least"
|
||||||
" this given seconds are cleaned",
|
" this given seconds are cleaned",
|
||||||
|
|
|
@ -439,11 +439,12 @@ handle_getmanifest(struct command *getmanifest_cmd,
|
||||||
|
|
||||||
for (size_t i = 0; i < tal_count(opts); i++) {
|
for (size_t i = 0; i < tal_count(opts); i++) {
|
||||||
tal_append_fmt(¶ms, "{ 'name': '%s',"
|
tal_append_fmt(¶ms, "{ 'name': '%s',"
|
||||||
" 'type': 'string',"
|
" 'type': '%s',"
|
||||||
" 'description': '%s' }%s",
|
" 'description': '%s' }%s",
|
||||||
opts[i].name,
|
opts[i].name,
|
||||||
opts[i].description,
|
opts[i].type,
|
||||||
i == tal_count(opts) - 1 ? "" : ",\n");
|
opts[i].description,
|
||||||
|
i == tal_count(opts) - 1 ? "" : ",\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
tal_append_fmt(¶ms,
|
tal_append_fmt(¶ms,
|
||||||
|
@ -507,7 +508,6 @@ static struct command_result *handle_init(struct command *init_cmd,
|
||||||
&rpc_conn,
|
&rpc_conn,
|
||||||
".allow-deprecated-apis"),
|
".allow-deprecated-apis"),
|
||||||
"true");
|
"true");
|
||||||
|
|
||||||
opttok = json_get_member(buf, params, "options");
|
opttok = json_get_member(buf, params, "options");
|
||||||
json_for_each_obj(i, t, opttok) {
|
json_for_each_obj(i, t, opttok) {
|
||||||
char *opt = json_strdup(NULL, buf, t);
|
char *opt = json_strdup(NULL, buf, t);
|
||||||
|
@ -695,6 +695,7 @@ void plugin_main(char *argv[],
|
||||||
while ((optname = va_arg(ap, const char *)) != NULL) {
|
while ((optname = va_arg(ap, const char *)) != NULL) {
|
||||||
struct plugin_option o;
|
struct plugin_option o;
|
||||||
o.name = optname;
|
o.name = optname;
|
||||||
|
o.type = va_arg(ap, const char *);
|
||||||
o.description = va_arg(ap, const char *);
|
o.description = va_arg(ap, const char *);
|
||||||
o.handle = va_arg(ap, char *(*)(const char *str, void *arg));
|
o.handle = va_arg(ap, char *(*)(const char *str, void *arg));
|
||||||
o.arg = va_arg(ap, void *);
|
o.arg = va_arg(ap, void *);
|
||||||
|
|
|
@ -29,6 +29,7 @@ struct plugin_command {
|
||||||
/* Create an array of these, one for each --option you support. */
|
/* Create an array of these, one for each --option you support. */
|
||||||
struct plugin_option {
|
struct plugin_option {
|
||||||
const char *name;
|
const char *name;
|
||||||
|
const char *type;
|
||||||
const char *description;
|
const char *description;
|
||||||
char *(*handle)(const char *str, void *arg);
|
char *(*handle)(const char *str, void *arg);
|
||||||
void *arg;
|
void *arg;
|
||||||
|
@ -119,8 +120,9 @@ struct plugin_timer *plugin_timer(struct plugin_conn *rpc,
|
||||||
void PRINTF_FMT(2, 3) plugin_log(enum log_level l, const char *fmt, ...);
|
void PRINTF_FMT(2, 3) plugin_log(enum log_level l, const char *fmt, ...);
|
||||||
|
|
||||||
/* Macro to define arguments */
|
/* Macro to define arguments */
|
||||||
#define plugin_option(name, description, set, arg) \
|
#define plugin_option(name, type, description, set, arg) \
|
||||||
(name), \
|
(name), \
|
||||||
|
(type), \
|
||||||
(description), \
|
(description), \
|
||||||
typesafe_cb_preargs(char *, void *, (set), (arg), const char *), \
|
typesafe_cb_preargs(char *, void *, (set), (arg), const char *), \
|
||||||
(arg)
|
(arg)
|
||||||
|
|
Loading…
Reference in New Issue