mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-24 20:08:10 +01:00
cli/tag: convert to new config framework.
In addition to changing configuration access, change talloc context for allocation.
This commit is contained in:
parent
6c28039ebb
commit
c56dcea7e2
3 changed files with 63 additions and 12 deletions
|
@ -187,11 +187,10 @@ tag_file (void *ctx, notmuch_database_t *notmuch, tag_op_flag_t flags,
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
notmuch_tag_command (notmuch_config_t *config, unused(notmuch_database_t *notmuch), int argc, char *argv[])
|
notmuch_tag_command (unused(notmuch_config_t *config), notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
tag_op_list_t *tag_ops = NULL;
|
tag_op_list_t *tag_ops = NULL;
|
||||||
char *query_string = NULL;
|
char *query_string = NULL;
|
||||||
notmuch_database_t *notmuch;
|
|
||||||
struct sigaction action;
|
struct sigaction action;
|
||||||
tag_op_flag_t tag_flags = TAG_FLAG_NONE;
|
tag_op_flag_t tag_flags = TAG_FLAG_NONE;
|
||||||
bool batch = false;
|
bool batch = false;
|
||||||
|
@ -200,6 +199,7 @@ notmuch_tag_command (notmuch_config_t *config, unused(notmuch_database_t *notmuc
|
||||||
const char *input_file_name = NULL;
|
const char *input_file_name = NULL;
|
||||||
int opt_index;
|
int opt_index;
|
||||||
int ret;
|
int ret;
|
||||||
|
notmuch_bool_t synchronize_flags;
|
||||||
|
|
||||||
/* Set up our handler for SIGINT */
|
/* Set up our handler for SIGINT */
|
||||||
memset (&action, 0, sizeof (struct sigaction));
|
memset (&action, 0, sizeof (struct sigaction));
|
||||||
|
@ -240,13 +240,13 @@ notmuch_tag_command (notmuch_config_t *config, unused(notmuch_database_t *notmuc
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tag_ops = tag_op_list_create (config);
|
tag_ops = tag_op_list_create (notmuch);
|
||||||
if (tag_ops == NULL) {
|
if (tag_ops == NULL) {
|
||||||
fprintf (stderr, "Out of memory.\n");
|
fprintf (stderr, "Out of memory.\n");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parse_tag_command_line (config, argc - opt_index, argv + opt_index,
|
if (parse_tag_command_line (notmuch, argc - opt_index, argv + opt_index,
|
||||||
&query_string, tag_ops))
|
&query_string, tag_ops))
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
|
@ -261,22 +261,25 @@ notmuch_tag_command (notmuch_config_t *config, unused(notmuch_database_t *notmuc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (notmuch_database_open (notmuch_config_get_database_path (config),
|
|
||||||
NOTMUCH_DATABASE_MODE_READ_WRITE, ¬much))
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
|
|
||||||
notmuch_exit_if_unmatched_db_uuid (notmuch);
|
notmuch_exit_if_unmatched_db_uuid (notmuch);
|
||||||
|
|
||||||
if (notmuch_config_get_maildir_synchronize_flags (config))
|
if (print_status_database (
|
||||||
|
"notmuch restore",
|
||||||
|
notmuch,
|
||||||
|
notmuch_config_get_bool (notmuch, NOTMUCH_CONFIG_SYNC_MAILDIR_FLAGS,
|
||||||
|
&synchronize_flags)))
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
|
if (synchronize_flags)
|
||||||
tag_flags |= TAG_FLAG_MAILDIR_SYNC;
|
tag_flags |= TAG_FLAG_MAILDIR_SYNC;
|
||||||
|
|
||||||
if (remove_all)
|
if (remove_all)
|
||||||
tag_flags |= TAG_FLAG_REMOVE_ALL;
|
tag_flags |= TAG_FLAG_REMOVE_ALL;
|
||||||
|
|
||||||
if (batch)
|
if (batch)
|
||||||
ret = tag_file (config, notmuch, tag_flags, input);
|
ret = tag_file (notmuch, notmuch, tag_flags, input);
|
||||||
else
|
else
|
||||||
ret = tag_query (config, notmuch, query_string, tag_ops, tag_flags);
|
ret = tag_query (notmuch, notmuch, query_string, tag_ops, tag_flags);
|
||||||
|
|
||||||
notmuch_database_destroy (notmuch);
|
notmuch_database_destroy (notmuch);
|
||||||
|
|
||||||
|
|
|
@ -157,7 +157,7 @@ static command_t commands[] = {
|
||||||
"Count messages matching the search terms." },
|
"Count messages matching the search terms." },
|
||||||
{ "reply", notmuch_reply_command, NOTMUCH_COMMAND_DATABASE_EARLY,
|
{ "reply", notmuch_reply_command, NOTMUCH_COMMAND_DATABASE_EARLY,
|
||||||
"Construct a reply template for a set of messages." },
|
"Construct a reply template for a set of messages." },
|
||||||
{ "tag", notmuch_tag_command, NOTMUCH_COMMAND_CONFIG_OPEN,
|
{ "tag", notmuch_tag_command, NOTMUCH_COMMAND_DATABASE_EARLY | NOTMUCH_COMMAND_DATABASE_WRITE,
|
||||||
"Add/remove tags for all messages matching the search terms." },
|
"Add/remove tags for all messages matching the search terms." },
|
||||||
{ "dump", notmuch_dump_command, NOTMUCH_COMMAND_DATABASE_EARLY | NOTMUCH_COMMAND_DATABASE_WRITE,
|
{ "dump", notmuch_dump_command, NOTMUCH_COMMAND_DATABASE_EARLY | NOTMUCH_COMMAND_DATABASE_WRITE,
|
||||||
"Create a plain-text dump of the tags for each message." },
|
"Create a plain-text dump of the tags for each message." },
|
||||||
|
|
|
@ -399,4 +399,52 @@ restore_database
|
||||||
restore_config
|
restore_config
|
||||||
test_expect_equal "$output" "OK"
|
test_expect_equal "$output" "OK"
|
||||||
|
|
||||||
|
# reset to known state
|
||||||
|
add_email_corpus
|
||||||
|
|
||||||
|
test_begin_subtest "tag with saved query from config file"
|
||||||
|
backup_config
|
||||||
|
query_name="test${RANDOM}"
|
||||||
|
tag_name="tag${RANDOM}"
|
||||||
|
notmuch count query:$query_name > OUTPUT
|
||||||
|
printf "\n[query]\n${query_name} = tag:inbox\n" >> notmuch-config
|
||||||
|
notmuch tag +$tag_name -- query:${query_name}
|
||||||
|
notmuch count tag:$tag_name >> OUTPUT
|
||||||
|
cat <<EOF > EXPECTED
|
||||||
|
0
|
||||||
|
52
|
||||||
|
EOF
|
||||||
|
restore_config
|
||||||
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
|
test_begin_subtest "tag with saved query from config file (xdg)"
|
||||||
|
xdg_config
|
||||||
|
query_name="test${RANDOM}"
|
||||||
|
tag_name="tag${RANDOM}"
|
||||||
|
notmuch count query:$query_name > OUTPUT
|
||||||
|
printf "\n[query]\n${query_name} = tag:inbox\n" >> ${CONFIG_PATH}
|
||||||
|
notmuch tag +$tag_name -- query:${query_name}
|
||||||
|
notmuch count tag:$tag_name >> OUTPUT
|
||||||
|
cat <<EOF > EXPECTED
|
||||||
|
0
|
||||||
|
52
|
||||||
|
EOF
|
||||||
|
restore_config
|
||||||
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
|
test_begin_subtest "tag with saved query from config file (xdg+profile)"
|
||||||
|
query_name="test${RANDOM}"
|
||||||
|
xdg_config ${query_name}
|
||||||
|
tag_name="tag${RANDOM}"
|
||||||
|
notmuch count query:$query_name > OUTPUT
|
||||||
|
printf "\n[query]\n${query_name} = tag:inbox\n" >> ${CONFIG_PATH}
|
||||||
|
notmuch tag +$tag_name -- query:${query_name}
|
||||||
|
notmuch count tag:$tag_name >> OUTPUT
|
||||||
|
cat <<EOF > EXPECTED
|
||||||
|
0
|
||||||
|
52
|
||||||
|
EOF
|
||||||
|
restore_config
|
||||||
|
test_expect_equal_file EXPECTED OUTPUT
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in a new issue