mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
CLI/setup: switch to new configuration framework
Most of the changes are the elimination of notmuch_config_t accessor use. We also migrate some of the diagnostics to the top level where we are opening the files in question.
This commit is contained in:
parent
ee0e1cfb17
commit
34f734e26b
2 changed files with 37 additions and 35 deletions
|
@ -88,14 +88,17 @@ welcome_message_post_setup (void)
|
|||
}
|
||||
|
||||
static void
|
||||
print_tag_list (const char **tags, size_t tags_len)
|
||||
print_tag_list (notmuch_config_values_t *tags)
|
||||
{
|
||||
unsigned int i;
|
||||
bool first = false;
|
||||
|
||||
for (i = 0; i < tags_len; i++) {
|
||||
if (i != 0)
|
||||
for (;
|
||||
notmuch_config_values_valid (tags);
|
||||
notmuch_config_values_move_to_next (tags)) {
|
||||
if (! first)
|
||||
printf (" ");
|
||||
printf ("%s", tags[i]);
|
||||
first = false;
|
||||
printf ("%s", notmuch_config_values_get (tags));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -122,19 +125,13 @@ parse_tag_list (void *ctx, char *response)
|
|||
|
||||
int
|
||||
notmuch_setup_command (notmuch_config_t *config,
|
||||
unused(notmuch_database_t *notmuch),
|
||||
notmuch_database_t *notmuch,
|
||||
int argc, char *argv[])
|
||||
{
|
||||
char *response = NULL;
|
||||
size_t response_size = 0;
|
||||
const char **old_other_emails;
|
||||
size_t old_other_emails_len;
|
||||
GPtrArray *other_emails;
|
||||
unsigned int i;
|
||||
const char **new_tags;
|
||||
size_t new_tags_len;
|
||||
const char **search_exclude_tags;
|
||||
size_t search_exclude_tags_len;
|
||||
notmuch_config_values_t *new_tags, *search_exclude_tags, *emails;
|
||||
|
||||
#define prompt(format, ...) \
|
||||
do { \
|
||||
|
@ -157,26 +154,27 @@ notmuch_setup_command (notmuch_config_t *config,
|
|||
if (notmuch_config_is_new (config))
|
||||
welcome_message_pre_setup ();
|
||||
|
||||
prompt ("Your full name [%s]: ", notmuch_config_get_user_name (config));
|
||||
prompt ("Your full name [%s]: ", notmuch_config_get (notmuch, NOTMUCH_CONFIG_USER_NAME));
|
||||
if (strlen (response))
|
||||
notmuch_config_set_user_name (config, response);
|
||||
|
||||
prompt ("Your primary email address [%s]: ",
|
||||
notmuch_config_get_user_primary_email (config));
|
||||
notmuch_config_get (notmuch, NOTMUCH_CONFIG_PRIMARY_EMAIL));
|
||||
if (strlen (response))
|
||||
notmuch_config_set_user_primary_email (config, response);
|
||||
|
||||
other_emails = g_ptr_array_new ();
|
||||
|
||||
old_other_emails = notmuch_config_get_user_other_email (config,
|
||||
&old_other_emails_len);
|
||||
for (i = 0; i < old_other_emails_len; i++) {
|
||||
prompt ("Additional email address [%s]: ", old_other_emails[i]);
|
||||
for (emails = notmuch_config_get_values (notmuch, NOTMUCH_CONFIG_OTHER_EMAIL);
|
||||
notmuch_config_values_valid (emails);
|
||||
notmuch_config_values_move_to_next (emails)) {
|
||||
const char *email = notmuch_config_values_get (emails);
|
||||
|
||||
prompt ("Additional email address [%s]: ", email);
|
||||
if (strlen (response))
|
||||
g_ptr_array_add (other_emails, talloc_strdup (config, response));
|
||||
else
|
||||
g_ptr_array_add (other_emails, talloc_strdup (config,
|
||||
old_other_emails[i]));
|
||||
g_ptr_array_add (other_emails, talloc_strdup (config, email));
|
||||
}
|
||||
|
||||
do {
|
||||
|
@ -192,7 +190,7 @@ notmuch_setup_command (notmuch_config_t *config,
|
|||
g_ptr_array_free (other_emails, true);
|
||||
|
||||
prompt ("Top-level directory of your email archive [%s]: ",
|
||||
notmuch_config_get_database_path (config));
|
||||
notmuch_config_get (notmuch, NOTMUCH_CONFIG_DATABASE_PATH));
|
||||
if (strlen (response)) {
|
||||
const char *absolute_path;
|
||||
|
||||
|
@ -200,10 +198,10 @@ notmuch_setup_command (notmuch_config_t *config,
|
|||
notmuch_config_set_database_path (config, absolute_path);
|
||||
}
|
||||
|
||||
new_tags = notmuch_config_get_new_tags (config, &new_tags_len);
|
||||
new_tags = notmuch_config_get_values (notmuch, NOTMUCH_CONFIG_NEW_TAGS);
|
||||
|
||||
printf ("Tags to apply to all new messages (separated by spaces) [");
|
||||
print_tag_list (new_tags, new_tags_len);
|
||||
print_tag_list (new_tags);
|
||||
prompt ("]: ");
|
||||
|
||||
if (strlen (response)) {
|
||||
|
@ -215,11 +213,10 @@ notmuch_setup_command (notmuch_config_t *config,
|
|||
g_ptr_array_free (tags, true);
|
||||
}
|
||||
|
||||
|
||||
search_exclude_tags = notmuch_config_get_search_exclude_tags (config, &search_exclude_tags_len);
|
||||
search_exclude_tags = notmuch_config_get_values (notmuch, NOTMUCH_CONFIG_EXCLUDE_TAGS);
|
||||
|
||||
printf ("Tags to exclude when searching messages (separated by spaces) [");
|
||||
print_tag_list (search_exclude_tags, search_exclude_tags_len);
|
||||
print_tag_list (search_exclude_tags);
|
||||
prompt ("]: ");
|
||||
|
||||
if (strlen (response)) {
|
||||
|
|
21
notmuch.c
21
notmuch.c
|
@ -141,9 +141,11 @@ notmuch_process_shared_indexing_options (notmuch_database_t *notmuch)
|
|||
|
||||
|
||||
static command_t commands[] = {
|
||||
{ NULL, notmuch_command, NOTMUCH_COMMAND_CONFIG_OPEN | NOTMUCH_COMMAND_CONFIG_CREATE,
|
||||
{ NULL, notmuch_command, NOTMUCH_COMMAND_CONFIG_OPEN | NOTMUCH_COMMAND_CONFIG_CREATE
|
||||
| NOTMUCH_COMMAND_CONFIG_LOAD,
|
||||
"Notmuch main command." },
|
||||
{ "setup", notmuch_setup_command, NOTMUCH_COMMAND_CONFIG_OPEN | NOTMUCH_COMMAND_CONFIG_CREATE,
|
||||
{ "setup", notmuch_setup_command, NOTMUCH_COMMAND_CONFIG_OPEN | NOTMUCH_COMMAND_CONFIG_CREATE
|
||||
| NOTMUCH_COMMAND_CONFIG_LOAD,
|
||||
"Interactively set up notmuch for first use." },
|
||||
{ "new", notmuch_new_command,
|
||||
NOTMUCH_COMMAND_DATABASE_EARLY | NOTMUCH_COMMAND_DATABASE_WRITE |
|
||||
|
@ -375,7 +377,7 @@ notmuch_help_command (unused (notmuch_config_t *config), unused(notmuch_database
|
|||
*/
|
||||
static int
|
||||
notmuch_command (notmuch_config_t *config,
|
||||
unused(notmuch_database_t *notmuch),
|
||||
notmuch_database_t *notmuch,
|
||||
unused(int argc), unused(char **argv))
|
||||
{
|
||||
char *db_path;
|
||||
|
@ -385,7 +387,7 @@ notmuch_command (notmuch_config_t *config,
|
|||
* notmuch_setup_command which will give a nice welcome message,
|
||||
* and interactively guide the user through the configuration. */
|
||||
if (notmuch_config_is_new (config))
|
||||
return notmuch_setup_command (config, NULL, 0, NULL);
|
||||
return notmuch_setup_command (config, notmuch, 0, NULL);
|
||||
|
||||
/* Notmuch is already configured, but is there a database? */
|
||||
db_path = talloc_asprintf (config, "%s/%s",
|
||||
|
@ -569,14 +571,17 @@ main (int argc, char *argv[])
|
|||
NULL,
|
||||
¬much,
|
||||
&status_string);
|
||||
if (status) {
|
||||
|
||||
if (status == NOTMUCH_STATUS_NO_CONFIG && ! (command->mode & NOTMUCH_COMMAND_CONFIG_CREATE)) {
|
||||
fputs ("Try running 'notmuch setup' to create a configuration.", stderr);
|
||||
goto DONE;
|
||||
}
|
||||
|
||||
if (status && (status != NOTMUCH_STATUS_NO_CONFIG)) {
|
||||
if (status_string) {
|
||||
fputs (status_string, stderr);
|
||||
free (status_string);
|
||||
}
|
||||
|
||||
if (status == NOTMUCH_STATUS_NO_CONFIG)
|
||||
fputs ("Try running 'notmuch setup' to create a configuration.", stderr);
|
||||
goto DONE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue