diff --git a/src/doveadm/doveadm-mail-mailbox-metadata.c b/src/doveadm/doveadm-mail-mailbox-metadata.c index 103c4680f4..bc185fc721 100644 --- a/src/doveadm/doveadm-mail-mailbox-metadata.c +++ b/src/doveadm/doveadm-mail-mailbox-metadata.c @@ -286,22 +286,46 @@ static struct doveadm_mail_cmd_context *cmd_mailbox_metadata_list_alloc(void) return &ctx->ctx; } -struct doveadm_mail_cmd cmd_mailbox_metadata_set = { - cmd_mailbox_metadata_set_alloc, "mailbox metadata set", - " " +struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_set_ver2 = { + .name = "mailbox metadata set", + .mail_cmd = cmd_mailbox_metadata_set_alloc, + .usage = " ", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_MAIL_COMMON +DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM(":", "key", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM(":", "value", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAMS_END }; -struct doveadm_mail_cmd cmd_mailbox_metadata_unset = { - cmd_mailbox_metadata_unset_alloc, "mailbox metadata unset", - " " +struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_unset_ver2 = { + .name = "mailbox metadata unset", + .mail_cmd = cmd_mailbox_metadata_unset_alloc, + .usage = " ", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_MAIL_COMMON +DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM(":", "key", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAMS_END }; -struct doveadm_mail_cmd cmd_mailbox_metadata_get = { - cmd_mailbox_metadata_get_alloc, "mailbox metadata get", - " " +struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_get_ver2 = { + .name = "mailbox metadata get", + .mail_cmd = cmd_mailbox_metadata_get_alloc, + .usage = " ", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_MAIL_COMMON +DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM(":", "key", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAMS_END }; -struct doveadm_mail_cmd cmd_mailbox_metadata_list = { - cmd_mailbox_metadata_list_alloc, "mailbox metadata list", - " []" +struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_list_ver2 = { + .name = "mailbox metadata list", + .mail_cmd = cmd_mailbox_metadata_list_alloc, + .usage = " []", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_MAIL_COMMON +DOVEADM_CMD_PARAM(":", "key-prefix", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAMS_END }; diff --git a/src/doveadm/doveadm-mail-mailbox-status.c b/src/doveadm/doveadm-mail-mailbox-status.c index 299644bfc4..6c950ef65d 100644 --- a/src/doveadm/doveadm-mail-mailbox-status.c +++ b/src/doveadm/doveadm-mail-mailbox-status.c @@ -247,7 +247,15 @@ static struct doveadm_mail_cmd_context *cmd_mailbox_status_alloc(void) return &ctx->ctx; } -struct doveadm_mail_cmd cmd_mailbox_status = { - cmd_mailbox_status_alloc, "mailbox status", - "[-t] [...]" +struct doveadm_cmd_ver2 doveadm_cmd_mailbox_status_ver2 = { + .name = "mailbox status", + .mail_cmd = cmd_mailbox_status_alloc, + .usage = " [...]", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_MAIL_COMMON +DOVEADM_CMD_PARAM("t", "total-sum", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM("f:", "field", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM(":", "fieldstr", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL | CMD_PARAM_FLAG_DO_NOT_EXPOSE) /* FIXME: horrible hack, remove me when possible */ +DOVEADM_CMD_PARAM(":", "mask", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAMS_END }; diff --git a/src/doveadm/doveadm-mail-mailbox.c b/src/doveadm/doveadm-mail-mailbox.c index 0e5c45972b..65544b2cce 100644 --- a/src/doveadm/doveadm-mail-mailbox.c +++ b/src/doveadm/doveadm-mail-mailbox.c @@ -556,27 +556,70 @@ static struct doveadm_mail_cmd_context *cmd_mailbox_unsubscribe_alloc(void) return cmd_mailbox_subscriptions_alloc(FALSE); } -struct doveadm_mail_cmd cmd_mailbox_list = { - cmd_mailbox_list_alloc, "mailbox list", - "[-7|-8] [-s] [ [...]]" +struct doveadm_cmd_ver2 doveadm_cmd_mailbox_list_ver2 = { + .name = "mailbox list", + .mail_cmd = cmd_mailbox_list_alloc, + .usage = "[-7|-8] [-s] [ [...]]", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_MAIL_COMMON +DOVEADM_CMD_PARAM("7", "mutf7", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM("8", "no-mutf7", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM("s", "subscriptions", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM(":", "mask", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAMS_END }; -struct doveadm_mail_cmd cmd_mailbox_create = { - cmd_mailbox_create_alloc, "mailbox create", - "[-s] [-g ] [...]" + +struct doveadm_cmd_ver2 doveadm_cmd_mailbox_create_ver2 = { + .name = "mailbox create", + .mail_cmd = cmd_mailbox_create_alloc, + .usage = "[-s] [-g ] [...]", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_MAIL_COMMON +DOVEADM_CMD_PARAM("s", "subscriptions", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM("g", "guid", CMD_PARAM_STR, 0) +DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAMS_END }; -struct doveadm_mail_cmd cmd_mailbox_delete = { - cmd_mailbox_delete_alloc, "mailbox delete", - "[-s] [...]" + +struct doveadm_cmd_ver2 doveadm_cmd_mailbox_delete_ver2 = { + .name = "mailbox delete", + .mail_cmd = cmd_mailbox_delete_alloc, + .usage = "[-s] [...]", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_MAIL_COMMON +DOVEADM_CMD_PARAM("s", "subscriptions", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAMS_END }; -struct doveadm_mail_cmd cmd_mailbox_rename = { - cmd_mailbox_rename_alloc, "mailbox rename", - "[-s] " + +struct doveadm_cmd_ver2 doveadm_cmd_mailbox_rename_ver2 = { + .name = "mailbox rename", + .mail_cmd = cmd_mailbox_rename_alloc, + .usage = "[-s] ", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_MAIL_COMMON +DOVEADM_CMD_PARAM("s", "subscriptions", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM(":", "old", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM(":", "new", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAMS_END }; -struct doveadm_mail_cmd cmd_mailbox_subscribe = { - cmd_mailbox_subscribe_alloc, "mailbox subscribe", - " [...]" + +struct doveadm_cmd_ver2 doveadm_cmd_mailbox_subscribe_ver2 = { + .name = "mailbox subscribe", + .mail_cmd = cmd_mailbox_subscribe_alloc, + .usage = " [...]", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_MAIL_COMMON +DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAMS_END }; -struct doveadm_mail_cmd cmd_mailbox_unsubscribe = { - cmd_mailbox_unsubscribe_alloc, "mailbox unsubscribe", - " [...]" + +struct doveadm_cmd_ver2 doveadm_cmd_mailbox_unsubscribe_ver2 = { + .name = "mailbox unsubscribe", + .mail_cmd = cmd_mailbox_unsubscribe_alloc, + .usage = " [...]", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_MAIL_COMMON +DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAMS_END }; diff --git a/src/doveadm/doveadm-mail.c b/src/doveadm/doveadm-mail.c index dac6c034de..7647b752fa 100644 --- a/src/doveadm/doveadm-mail.c +++ b/src/doveadm/doveadm-mail.c @@ -827,17 +827,6 @@ static struct doveadm_mail_cmd *mail_commands[] = { &cmd_copy, &cmd_deduplicate, &cmd_move, - &cmd_mailbox_list, - &cmd_mailbox_create, - &cmd_mailbox_delete, - &cmd_mailbox_rename, - &cmd_mailbox_subscribe, - &cmd_mailbox_unsubscribe, - &cmd_mailbox_status, - &cmd_mailbox_metadata_set, - &cmd_mailbox_metadata_unset, - &cmd_mailbox_metadata_get, - &cmd_mailbox_metadata_list, &cmd_batch, &cmd_dsync_backup, &cmd_dsync_mirror, @@ -845,6 +834,17 @@ static struct doveadm_mail_cmd *mail_commands[] = { }; static struct doveadm_cmd_ver2 *mail_commands_ver2[] = { + &doveadm_cmd_mailbox_metadata_set_ver2, + &doveadm_cmd_mailbox_metadata_unset_ver2, + &doveadm_cmd_mailbox_metadata_get_ver2, + &doveadm_cmd_mailbox_metadata_list_ver2, + &doveadm_cmd_mailbox_status_ver2, + &doveadm_cmd_mailbox_list_ver2, + &doveadm_cmd_mailbox_create_ver2, + &doveadm_cmd_mailbox_delete_ver2, + &doveadm_cmd_mailbox_rename_ver2, + &doveadm_cmd_mailbox_subscribe_ver2, + &doveadm_cmd_mailbox_unsubscribe_ver2 }; void doveadm_mail_init(void) diff --git a/src/doveadm/doveadm-mail.h b/src/doveadm/doveadm-mail.h index 969a8bc74b..a70e982033 100644 --- a/src/doveadm/doveadm-mail.h +++ b/src/doveadm/doveadm-mail.h @@ -182,19 +182,20 @@ extern struct doveadm_mail_cmd cmd_altmove; extern struct doveadm_mail_cmd cmd_copy; extern struct doveadm_mail_cmd cmd_deduplicate; extern struct doveadm_mail_cmd cmd_move; -extern struct doveadm_mail_cmd cmd_mailbox_list; -extern struct doveadm_mail_cmd cmd_mailbox_create; -extern struct doveadm_mail_cmd cmd_mailbox_delete; -extern struct doveadm_mail_cmd cmd_mailbox_rename; -extern struct doveadm_mail_cmd cmd_mailbox_subscribe; -extern struct doveadm_mail_cmd cmd_mailbox_unsubscribe; -extern struct doveadm_mail_cmd cmd_mailbox_status; -extern struct doveadm_mail_cmd cmd_mailbox_metadata_set; -extern struct doveadm_mail_cmd cmd_mailbox_metadata_unset; -extern struct doveadm_mail_cmd cmd_mailbox_metadata_get; -extern struct doveadm_mail_cmd cmd_mailbox_metadata_list; extern struct doveadm_mail_cmd cmd_batch; +extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_set_ver2; +extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_unset_ver2; +extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_get_ver2; +extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_metadata_list_ver2; +extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_status_ver2; +extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_list_ver2; +extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_create_ver2; +extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_delete_ver2; +extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_rename_ver2; +extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_subscribe_ver2; +extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_unsubscribe_ver2; + #define DOVEADM_CMD_MAIL_COMMON \ DOVEADM_CMD_PARAM("A", "all-users", CMD_PARAM_BOOL, 0) \ DOVEADM_CMD_PARAM("S:", "socket-path", CMD_PARAM_STR, 0) \