From c53e001973b5d6d749cae20f739eaa3b674a1d92 Mon Sep 17 00:00:00 2001 From: Stephen Dolan Date: Sun, 21 Oct 2012 23:26:31 +0100 Subject: Version number tracking. --- Makefile | 10 ++++++++-- VERSION | 1 + docs/content/3.manual/manual.yml | 2 +- main.c | 6 +++++- 4 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 VERSION diff --git a/Makefile b/Makefile index ac55fd4a..a9a53e02 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ CC=gcc -Wextra -Wall -Wno-missing-field-initializers -Wno-unused-parameter -std=gnu99 -ggdb -Wno-unused-function prefix=/usr/local -.PHONY: all clean releasedep tarball +.PHONY: all clean releasedep tarball install uninstall test releasetag all: jq clean: @@ -22,6 +22,10 @@ jv_utf8_tables.gen.h: gen_utf8_tables.py python $^ > $@ jv_unicode.c: jv_utf8_tables.gen.h +version.gen.h: VERSION + sed 's/.*/#define JQ_VERSION "&"/' $^ > $@ +main.c: version.gen.h + JQ_SRC=parser.gen.c lexer.gen.c opcode.c bytecode.c compile.c execute.c builtin.c jv.c jv_parse.c jv_print.c jv_dtoa.c jv_unicode.c @@ -31,13 +35,15 @@ jq_test: $(JQ_SRC) jq_test.c jq: $(JQ_SRC) main.c $(CC) -O -DJQ_DEBUG=0 -o $@ $^ - test: jq_test valgrind --error-exitcode=1 -q --leak-check=full ./jq_test >/dev/null releasedep: lexer.gen.c parser.gen.c jv_utf8_tables.gen.h +releasetag: + git tag -s "jq-$$(cat VERSION)" -m "jq release $$(cat VERSION)" + docs/content/2.download/source/jq.tgz: jq mkdir -p `dirname $@` tar -czvf $@ `git ls-files; ls *.gen.*` diff --git a/VERSION b/VERSION new file mode 100644 index 00000000..9459d4ba --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1.1 diff --git a/docs/content/3.manual/manual.yml b/docs/content/3.manual/manual.yml index d3d4c423..4ec88c28 100644 --- a/docs/content/3.manual/manual.yml +++ b/docs/content/3.manual/manual.yml @@ -555,7 +555,7 @@ sections: results as `a`, if `a` produces results other than `false` and `null`. Otherwise, `a // b` produces the same results as `b`. - This is useful for providing defaults: `.foo or 1` will + This is useful for providing defaults: `.foo // 1` will evaluate to `1` if there's no `.foo` element in the input. It's similar to how `or` is sometimes used in Python (jq's `or` operator is reserved for strictly Boolean diff --git a/main.c b/main.c index 48934cc4..30876a37 100644 --- a/main.c +++ b/main.c @@ -8,11 +8,12 @@ #include "locfile.h" #include "parser.h" #include "execute.h" +#include "version.gen.h" static const char* progname; static void usage() { - fprintf(stderr, "\njq - commandline JSON processor\n"); + fprintf(stderr, "\njq - commandline JSON processor [version %s]\n", JQ_VERSION); fprintf(stderr, "Usage: %s [options] \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"); @@ -92,6 +93,9 @@ int main(int argc, char* argv[]) { options |= PROVIDE_NULL; } else if (isoption(argv[i], 'h', "help")) { usage(); + } else if (isoption(argv[i], 'V', "version")) { + fprintf(stderr, "jq version %s\n", JQ_VERSION); + return 0; } else { fprintf(stderr, "%s: Unknown option %s\n", progname, argv[i]); die(); -- cgit v1.2.3