Support multiple configuration files via $NOTMUCH_CONFIG

If present, $NOTMUCH_CONFIG will be used as the configuration file
location.
This commit is contained in:
Alec Berryman 2009-11-21 23:18:26 -06:00 committed by Carl Worth
parent 8c09ca1e21
commit 91d1d3f043
4 changed files with 19 additions and 10 deletions

View file

@ -132,9 +132,10 @@ get_username_from_passwd_file (void *ctx)
return name; return name;
} }
/* Open the named notmuch configuration file. A filename of NULL will /* Open the named notmuch configuration file. If the filename is NULL,
* be interpreted as the default configuration file * the value of the environment variable $NOTMUCH_CONFIG will be used.
* ($HOME/.notmuch-config). * If $NOTMUCH_CONFIG is unset, the default configuration file
* ($HOME/.notmuch-config) will be used.
* *
* If any error occurs, (out of memory, or a permission-denied error, * If any error occurs, (out of memory, or a permission-denied error,
* etc.), this function will print a message to stderr and return * etc.), this function will print a message to stderr and return
@ -168,6 +169,7 @@ notmuch_config_open (void *ctx,
{ {
GError *error = NULL; GError *error = NULL;
int is_new = 0; int is_new = 0;
char *notmuch_config_env = NULL;
if (is_new_ret) if (is_new_ret)
*is_new_ret = 0; *is_new_ret = 0;
@ -180,11 +182,15 @@ notmuch_config_open (void *ctx,
talloc_set_destructor (config, notmuch_config_destructor); talloc_set_destructor (config, notmuch_config_destructor);
if (filename) if (filename) {
config->filename = talloc_strdup (config, filename); config->filename = talloc_strdup (config, filename);
else } else if ((notmuch_config_env = getenv ("NOTMUCH_CONFIG"))) {
config->filename = talloc_strdup (config, notmuch_config_env);
notmuch_config_env = NULL;
} else {
config->filename = talloc_asprintf (config, "%s/.notmuch-config", config->filename = talloc_asprintf (config, "%s/.notmuch-config",
getenv ("HOME")); getenv ("HOME"));
}
config->key_file = g_key_file_new (); config->key_file = g_key_file_new ();

View file

@ -76,7 +76,8 @@ welcome_message_post_setup (void)
"Notmuch is now configured, and the configuration settings are saved in\n" "Notmuch is now configured, and the configuration settings are saved in\n"
"a file in your home directory named .notmuch-config . If you'd like to\n" "a file in your home directory named .notmuch-config . If you'd like to\n"
"change the configuration in the future, you can either edit that file\n" "change the configuration in the future, you can either edit that file\n"
"directly or run \"notmuch setup\".\n\n" "directly or run \"notmuch setup\". To choose an alternate configuration\n"
"location, set ${NOTMUCH_CONFIG}.\n\n"
"The next step is to run \"notmuch new\" which will create a database\n" "The next step is to run \"notmuch new\" which will create a database\n"
"that indexes all of your mail. Depending on the amount of mail you have\n" "that indexes all of your mail. Depending on the amount of mail you have\n"

View file

@ -53,9 +53,10 @@ Interactively sets up notmuch for first use.
The setup command will prompt for your full name, your primary email The setup command will prompt for your full name, your primary email
address, any alternate email addresses you use, and the directory address, any alternate email addresses you use, and the directory
containing your email archives. Your answers will be written to a containing your email archives. Your answers will be written to a
configuration file in ${HOME}/.notmuch-config . This configuration configuration file in ${NOTMUCH_CONFIG} (if set) or
file will be created with descriptive comments, making it easy to edit ${HOME}/.notmuch-config . This configuration file will be created with
by hand later to change the configuration. Or you can run descriptive comments, making it easy to edit by hand later to change the
configuration. Or you can run
.B "notmuch setup" .B "notmuch setup"
again to change the configuration. again to change the configuration.

View file

@ -98,7 +98,8 @@ command_t commands[] = {
"\t\tThe setup command will prompt for your full name, your primary\n" "\t\tThe setup command will prompt for your full name, your primary\n"
"\t\temail address, any alternate email addresses you use, and the\n" "\t\temail address, any alternate email addresses you use, and the\n"
"\t\tdirectory containing your email archives. Your answers will be\n" "\t\tdirectory containing your email archives. Your answers will be\n"
"\t\twritten to a configuration file in ${HOME}/.notmuch-config .\n" "\t\twritten to a configuration file in ${NOTMUCH_CONFIG} (if set)\n"
"\t\tor ${HOME}/.notmuch-config.\n"
"\n" "\n"
"\t\tThis configuration file will be created with descriptive\n" "\t\tThis configuration file will be created with descriptive\n"
"\t\tcomments, making it easy to edit by hand later to change the\n" "\t\tcomments, making it easy to edit by hand later to change the\n"