unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* [PATCH] Support multiple configuration files via $NOTMUCH_CONFIG
@ 2009-11-22  5:18 Alec Berryman
  2009-11-23  2:08 ` Carl Worth
  2009-11-23 20:02 ` Ingmar Vanhassel
  0 siblings, 2 replies; 3+ messages in thread
From: Alec Berryman @ 2009-11-22  5:18 UTC (permalink / raw)
  To: notmuch

If present, $NOTMUCH_CONFIG will be used as the configuration file
location.
---
 notmuch-config.c |   16 +++++++++++-----
 notmuch-setup.c  |    3 ++-
 notmuch.1        |    7 ++++---
 notmuch.c        |    3 ++-
 4 files changed, 19 insertions(+), 10 deletions(-)

I'd like to have multiple configurations for personal and work email;
this solution worked for me.

I've been having trouble with git send-email and this list; sorry if
this comes a few times.

diff --git a/notmuch-config.c b/notmuch-config.c
index aaa0372..fc65d6b 100644
--- a/notmuch-config.c
+++ b/notmuch-config.c
@@ -132,9 +132,10 @@ get_username_from_passwd_file (void *ctx)
     return name;
 }
 
-/* Open the named notmuch configuration file. A filename of NULL will
- * be interpreted as the default configuration file
- * ($HOME/.notmuch-config).
+/* Open the named notmuch configuration file. If the filename is NULL,
+ * the value of the environment variable $NOTMUCH_CONFIG will be used.
+ * 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,
  * etc.), this function will print a message to stderr and return
@@ -168,6 +169,7 @@ notmuch_config_open (void *ctx,
 {
     GError *error = NULL;
     int is_new = 0;
+    char *notmuch_config_env = NULL;
 
     if (is_new_ret)
 	*is_new_ret = 0;
@@ -180,11 +182,15 @@ notmuch_config_open (void *ctx,
     
     talloc_set_destructor (config, notmuch_config_destructor);
 
-    if (filename)
+    if (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",
 					    getenv ("HOME"));
+    }
 
     config->key_file = g_key_file_new ();
 
diff --git a/notmuch-setup.c b/notmuch-setup.c
index 482efd2..d06fbf8 100644
--- a/notmuch-setup.c
+++ b/notmuch-setup.c
@@ -76,7 +76,8 @@ welcome_message_post_setup (void)
 "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"
 "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"
 "that indexes all of your mail. Depending on the amount of mail you have\n"
diff --git a/notmuch.1 b/notmuch.1
index 8a3fb40..eeb1a94 100644
--- a/notmuch.1
+++ b/notmuch.1
@@ -53,9 +53,10 @@ Interactively sets up notmuch for first use.
 The setup command will prompt for your full name, your primary email
 address, any alternate email addresses you use, and the directory
 containing your email archives. Your answers will be written to a
-configuration file in ${HOME}/.notmuch-config . This configuration
-file will be created with descriptive comments, making it easy to edit
-by hand later to change the configuration. Or you can run
+configuration file in ${NOTMUCH_CONFIG} (if set) or
+${HOME}/.notmuch-config . This configuration file will be created with
+descriptive comments, making it easy to edit by hand later to change the
+configuration. Or you can run
 .B "notmuch setup"
 again to change the configuration.
 
diff --git a/notmuch.c b/notmuch.c
index 5cc8e4c..d7ea5aa 100644
--- a/notmuch.c
+++ b/notmuch.c
@@ -98,7 +98,8 @@ command_t commands[] = {
       "\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\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"
       "\t\tThis configuration file will be created with descriptive\n"
       "\t\tcomments, making it easy to edit by hand later to change the\n"
-- 
1.6.5

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] Support multiple configuration files via $NOTMUCH_CONFIG
  2009-11-22  5:18 [PATCH] Support multiple configuration files via $NOTMUCH_CONFIG Alec Berryman
@ 2009-11-23  2:08 ` Carl Worth
  2009-11-23 20:02 ` Ingmar Vanhassel
  1 sibling, 0 replies; 3+ messages in thread
From: Carl Worth @ 2009-11-23  2:08 UTC (permalink / raw)
  To: Alec Berryman, notmuch

On Sat, 21 Nov 2009 23:18:26 -0600, Alec Berryman <alec@thened.net> wrote:
> If present, $NOTMUCH_CONFIG will be used as the configuration file
> location.

Hi Alec, welcome to notmuch!

And thanks for this patch. I've pushed it now.

I need this quite often when setting up a new database for testing a
patch, for example. And I had an environment variable for the database
path once upon a time, before adding a configuration file. But I lost
that feature when adding the configuration file. So it's really nice to
have this functionality back again.

We should probably add support for "notmuch -f <config-filename>" as
well. I've noted that idea in the TODO file now, (which just keeps
growing somehow).

-Carl

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Support multiple configuration files via $NOTMUCH_CONFIG
  2009-11-22  5:18 [PATCH] Support multiple configuration files via $NOTMUCH_CONFIG Alec Berryman
  2009-11-23  2:08 ` Carl Worth
@ 2009-11-23 20:02 ` Ingmar Vanhassel
  1 sibling, 0 replies; 3+ messages in thread
From: Ingmar Vanhassel @ 2009-11-23 20:02 UTC (permalink / raw)
  To: notmuch

Excerpts from Alec Berryman's message of Sun Nov 22 06:18:26 +0100 2009:
> If present, $NOTMUCH_CONFIG will be used as the configuration file
> location.

I'm a bit late to the party, but how about adding the more generic
NOTMUCH_OPTIONS, and --config-file, -c options to pass the path to the
configuration file?

-- 
Exherbo KDE, X.org maintainer

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-11-23 20:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-22  5:18 [PATCH] Support multiple configuration files via $NOTMUCH_CONFIG Alec Berryman
2009-11-23  2:08 ` Carl Worth
2009-11-23 20:02 ` Ingmar Vanhassel

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).