From b2a9fcd5cfd1bf84321b8bf53b37e7fb98618d6e Mon Sep 17 00:00:00 2001
From: Carl Worth <cworth@cworth.org>
Date: Fri, 2 Apr 2010 11:55:09 -0700
Subject: [PATCH] notmuch: Add a version (0.1 initially) with a new --version
 option.

We're planning to do actual releases soon, so we need a version
number to put into the tar file.
---
 Makefile.local   | 14 +++++++++++++-
 notmuch-client.h |  3 +++
 notmuch.c        |  6 ++++++
 3 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/Makefile.local b/Makefile.local
index c7f4719a..e9f86e0d 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -1,3 +1,15 @@
+# Here's the (hopefully simple) versioning scheme.
+#
+# Releases of notmuch have a two-digit version (0.1, 0.2, etc.). We
+# increment the second digit for each release and increment the first
+# digit when we reach particularly major milestones of usability.
+#
+# Between releases, (such as when compiling notmuch from the git
+# repository), we add a third digit, (0.1.1, 0.1.2, etc.), and
+# increment it occasionally, (such as after a big batch of commits are
+# merged.
+NOTMUCH_VERSION=0.1
+
 # Get settings from the output of configure by running it to generate
 # Makefile.config if it doesn't exist yet. And add Makefile.config to
 # our global dependency list.
@@ -18,7 +30,7 @@ extra_cflags :=
 extra_cxxflags :=
 
 # Smash together user's values with our extra values
-FINAL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(CONFIGURE_CFLAGS) $(extra_cflags)
+FINAL_CFLAGS = -DNOTMUCH_VERSION=$(NOTMUCH_VERSION) $(CFLAGS) $(WARN_CFLAGS) $(CONFIGURE_CFLAGS) $(extra_cflags)
 FINAL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(CONFIGURE_CXXFLAGS) $(extra_cflags) $(extra_cxxflags)
 FINAL_LDFLAGS = $(LDFLAGS) $(CONFIGURE_LDFLAGS)
 
diff --git a/notmuch-client.h b/notmuch-client.h
index c80b39cb..08d0a15b 100644
--- a/notmuch-client.h
+++ b/notmuch-client.h
@@ -51,6 +51,9 @@
 
 #define unused(x) x __attribute__ ((unused))
 
+#define STRINGIFY(s) STRINGIFY_(s)
+#define STRINGIFY_(s) #s
+
 /* There's no point in continuing when we've detected that we've done
  * something wrong internally (as opposed to the user passing in a
  * bogus value).
diff --git a/notmuch.c b/notmuch.c
index 3b743a90..e519f98e 100644
--- a/notmuch.c
+++ b/notmuch.c
@@ -309,6 +309,7 @@ usage (FILE *out)
 
     fprintf (out,
 	     "Usage: notmuch --help\n"
+	     "       notmuch --version\n"
 	     "       notmuch <command> [args...]\n");
     fprintf (out, "\n");
     fprintf (out, "Where <command> and [args...] are as follows:\n");
@@ -462,6 +463,11 @@ main (int argc, char *argv[])
     if (STRNCMP_LITERAL (argv[1], "--help") == 0)
 	return notmuch_help_command (NULL, 0, NULL);
 
+    if (STRNCMP_LITERAL (argv[1], "--version") == 0) {
+	printf ("notmuch version " STRINGIFY(NOTMUCH_VERSION) "\n");
+	return 0;
+    }
+
     for (i = 0; i < ARRAY_SIZE (commands); i++) {
 	command = &commands[i];
 
-- 
2.45.2