]> granicus.if.org Git - jq/commitdiff
Make jq --version report an actual git revision.
authorStephen Dolan <mu@netsoc.tcd.ie>
Fri, 24 May 2013 22:34:34 +0000 (23:34 +0100)
committerStephen Dolan <mu@netsoc.tcd.ie>
Fri, 24 May 2013 22:35:38 +0000 (23:35 +0100)
Closes #129.

.gitignore
Makefile.am
main.c
scripts/version [new file with mode: 0755]

index a8250a5097a56479dc5201fa0842d8fc458b199a..ba354c63def601303400c4b5d39df323d172a397 100644 (file)
@@ -26,3 +26,4 @@ jq-*.tar.gz
 configure
 aclocal.m4
 Makefile.in
+version.h
index 5508e9a274a3bcc890784d287e1d526be834f52b..23e9d253dc1b57de39d59fe9792adf99456e968f 100644 (file)
@@ -33,7 +33,10 @@ AM_YFLAGS = --warnings=all -d
 
 ### Building the jq binary
 
-main.c: config.h
+version.h:
+       @ { $(srcdir)/scripts/version || echo '$(VERSION)'; } | sed 's/.*/#define JQ_VERSION "&"/'> $@
+
+main.c: config.h version.h
 
 bin_PROGRAMS = jq
 jq_SOURCES = ${JQ_SRC} main.c
@@ -95,16 +98,13 @@ DOC_FILES = docs/content docs/public docs/templates docs/site.yml   \
 # the developer setup script in the tarball.
 EXTRA_DIST = config.h.in $(BUILT_SOURCES) $(man_MANS) $(TESTS) \
        $(TEST_LOG_COMPILER) gen_utf8_tables.py jq.spec \
-       $(DOC_FILES)
+       $(DOC_FILES) scripts/version
 
 # README.md is expected in Github projects, good stuff in it, so we'll 
 # distribute it and install it with the package in the doc directory.
 docdir = ${datadir}/doc/${PACKAGE}
 dist_doc_DATA = README.md COPYING AUTHORS README
 
-releasetag:
-       git tag -s "jq-$$(cat VERSION)" -m "jq release $$(cat VERSION)"
-
 RELEASE ?= 1
 rpm: jq
        @echo "Packaging jq as an RPM ..."
diff --git a/main.c b/main.c
index 42e309a96c68ce0968f34981f6cab9a7eccec88e..1e951849f7555f0a3c80ca7fd623880793cfbe96 100644 (file)
--- a/main.c
+++ b/main.c
@@ -9,13 +9,14 @@
 #include "execute.h"
 #include "config.h"  /* Autoconf generated header file */
 #include "jv_alloc.h"
+#include "version.h"
 
 int jq_testsuite(int argc, char* argv[]);
 
 static const char* progname;
 
 static void usage() {
-  fprintf(stderr, "\njq - commandline JSON processor [version %s]\n", PACKAGE_VERSION);
+  fprintf(stderr, "\njq - commandline JSON processor [version %s]\n", JQ_VERSION);
   fprintf(stderr, "Usage: %s [options] <jq filter> [file...]\n\n", progname);
   fprintf(stderr, "For a description of the command line options and\n");
   fprintf(stderr, "how to write jq filters (and why you might want to)\n");
@@ -238,7 +239,7 @@ int main(int argc, char* argv[]) {
     } else if (isoption(argv[i], 'h', "help")) {
       usage();
     } else if (isoption(argv[i], 'V', "version")) {
-      fprintf(stderr, "jq version %s\n", PACKAGE_VERSION);
+      fprintf(stderr, "jq-%s\n", JQ_VERSION);
       return 0;
     } else {
       fprintf(stderr, "%s: Unknown option %s\n", progname, argv[i]);
diff --git a/scripts/version b/scripts/version
new file mode 100755 (executable)
index 0000000..fb941a0
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+set -e
+cd `dirname "$0"`
+git rev-parse --verify -q jq-1.0 > /dev/null 2>&1
+git describe --always --match 'jq-*' --dirty | sed 's/^jq-//'