mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 17:34:54 +01:00
notmuch: Add a new "notmuch config" command for querying configuration.
So far, we implement only "notmuch config get". It won't be too much work from here to also implement "notmuch config set".
This commit is contained in:
parent
6c65fcd9aa
commit
b9eac48c22
4 changed files with 101 additions and 3 deletions
|
@ -113,6 +113,9 @@ notmuch_search_tags_command (void *ctx, int argc, char *argv[]);
|
|||
int
|
||||
notmuch_part_command (void *ctx, int argc, char *argv[]);
|
||||
|
||||
int
|
||||
notmuch_config_command (void *ctx, int argc, char *argv[]);
|
||||
|
||||
const char *
|
||||
notmuch_time_relative_date (const void *ctx, time_t then);
|
||||
|
||||
|
@ -174,7 +177,7 @@ void
|
|||
notmuch_config_set_user_primary_email (notmuch_config_t *config,
|
||||
const char *primary_email);
|
||||
|
||||
char **
|
||||
const char **
|
||||
notmuch_config_get_user_other_email (notmuch_config_t *config,
|
||||
size_t *length);
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ struct _notmuch_config {
|
|||
char *database_path;
|
||||
char *user_name;
|
||||
char *user_primary_email;
|
||||
char **user_other_email;
|
||||
const char **user_other_email;
|
||||
size_t user_other_email_length;
|
||||
const char **new_tags;
|
||||
size_t new_tags_length;
|
||||
|
@ -474,7 +474,7 @@ notmuch_config_set_user_primary_email (notmuch_config_t *config,
|
|||
config->user_primary_email = NULL;
|
||||
}
|
||||
|
||||
char **
|
||||
const char **
|
||||
notmuch_config_get_user_other_email (notmuch_config_t *config,
|
||||
size_t *length)
|
||||
{
|
||||
|
@ -562,3 +562,56 @@ notmuch_config_set_new_tags (notmuch_config_t *config,
|
|||
config->new_tags = NULL;
|
||||
}
|
||||
|
||||
int
|
||||
notmuch_config_command (void *ctx, int argc, char *argv[])
|
||||
{
|
||||
notmuch_config_t *config;
|
||||
const char *item;
|
||||
|
||||
if (argc != 2) {
|
||||
fprintf (stderr, "Error: notmuch config requires two arguments.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (strcmp (argv[0], "get")) {
|
||||
fprintf (stderr, "Unrecognized argument for notmuch config: %s\n",
|
||||
argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
config = notmuch_config_open (ctx, NULL, NULL);
|
||||
if (config == NULL)
|
||||
return 1;
|
||||
|
||||
item = argv[1];
|
||||
|
||||
if (strcmp(item, "database.path") == 0) {
|
||||
printf ("%s\n", notmuch_config_get_database_path (config));
|
||||
} else if (strcmp(item, "user.name") == 0) {
|
||||
printf ("%s\n", notmuch_config_get_user_name (config));
|
||||
} else if (strcmp(item, "user.primary_email") == 0) {
|
||||
printf ("%s\n", notmuch_config_get_user_primary_email (config));
|
||||
} else if (strcmp(item, "user.other_email") == 0) {
|
||||
const char **other_email;
|
||||
size_t i, length;
|
||||
|
||||
other_email = notmuch_config_get_user_other_email (config, &length);
|
||||
for (i = 0; i < length; i++)
|
||||
printf ("%s\n", other_email[i]);
|
||||
} else if (strcmp(item, "new.tags") == 0) {
|
||||
const char **tags;
|
||||
size_t i, length;
|
||||
|
||||
tags = notmuch_config_get_new_tags (config, &length);
|
||||
for (i = 0; i < length; i++)
|
||||
printf ("%s\n", tags[i]);
|
||||
} else {
|
||||
fprintf (stderr, "Unknown configuration item: %s\n",
|
||||
argv[1]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
notmuch_config_close (config);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
28
notmuch.1
28
notmuch.1
|
@ -404,6 +404,34 @@ See the
|
|||
section below for details of the supported syntax for <search-terms>.
|
||||
.RE
|
||||
|
||||
The
|
||||
.B config
|
||||
command can be used to get settings from the notmuch configuration
|
||||
file.
|
||||
|
||||
.RS 4
|
||||
.TP 4
|
||||
.BR "config get " <section> . <item>
|
||||
|
||||
Get settings from the notmuch configuration file.
|
||||
|
||||
The value of the specified configuration item is printed to stdout. If
|
||||
the item has multiple values, each value is separated by a newline
|
||||
character.
|
||||
|
||||
Available configuration items include at least
|
||||
|
||||
database.path
|
||||
|
||||
user.name
|
||||
|
||||
user.primary_email
|
||||
|
||||
user.other_email
|
||||
|
||||
new.tags
|
||||
.RE
|
||||
|
||||
.SH SEARCH SYNTAX
|
||||
Several notmuch commands accept a common syntax for search terms.
|
||||
|
||||
|
|
14
notmuch.c
14
notmuch.c
|
@ -321,6 +321,20 @@ command_t commands[] = {
|
|||
"\tby the \"--format=json\" option of \"notmuch show\". If the\n"
|
||||
"\tmessage specified by the search terms does not include a\n"
|
||||
"\tpart with the specified \"id\" there will be no output." },
|
||||
{ "config", notmuch_config_command,
|
||||
"get <section>.<item>",
|
||||
"Get settings from the notmuch configuration file.",
|
||||
"\tThe value of the specified configuration item is printed\n"
|
||||
"\tto stdout. If the item has multiple values, each value\n"
|
||||
"\tis separated by a newline character.\n"
|
||||
"\n"
|
||||
"\tAvailable configuration items include at least"
|
||||
"\n"
|
||||
"\t\tdatabase.path\n"
|
||||
"\t\tuser.name\n"
|
||||
"\t\tuser.primary_email\n"
|
||||
"\t\tuser.other_email\n"
|
||||
"\t\tnew.tags\n" },
|
||||
{ "help", notmuch_help_command,
|
||||
"[<command>]",
|
||||
"This message, or more detailed help for the named command.",
|
||||
|
|
Loading…
Reference in a new issue