Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package jo for openSUSE:Factory checked in at 2022-11-04 17:38:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/jo (Old) and /work/SRC/openSUSE:Factory/.jo.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jo" Fri Nov 4 17:38:03 2022 rev:7 rq:1033524 version:1.7 Changes: -------- --- /work/SRC/openSUSE:Factory/jo/jo.changes 2022-01-11 21:24:33.565182069 +0100 +++ /work/SRC/openSUSE:Factory/.jo.new.2275/jo.changes 2022-11-04 17:41:56.138995337 +0100 @@ -1,0 +2,9 @@ +Sat Oct 29 14:19:36 UTC 2022 - Martin Hauke <mar...@gmx.de> + +- Update to versino 1.7 + * FIX: fix reading of long lines from stdin and refactor + slurp_file() in the process. + * NEW: Add option -o outfile for when not run from a shell and + redirect '>' is not an option. + +------------------------------------------------------------------- Old: ---- jo-1.6.tar.gz New: ---- jo-1.7.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ jo.spec ++++++ --- /var/tmp/diff_new_pack.6eWK8z/_old 2022-11-04 17:41:56.626997887 +0100 +++ /var/tmp/diff_new_pack.6eWK8z/_new 2022-11-04 17:41:56.634997928 +0100 @@ -17,7 +17,7 @@ Name: jo -Version: 1.6 +Version: 1.7 Release: 0 Summary: JSON output from a shell License: GPL-2.0-or-later AND MIT ++++++ jo-1.6.tar.gz -> jo-1.7.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jo-1.6/ChangeLog new/jo-1.7/ChangeLog --- old/jo-1.6/ChangeLog 2022-01-05 16:59:37.000000000 +0100 +++ new/jo-1.7/ChangeLog 2022-10-29 15:26:13.000000000 +0200 @@ -1,4 +1,10 @@ +2022-10-29 1.7 +- FIX: fix warnings on Windows build and reimplement err{x,} functions (#193) +- FIX: fix reading of long lines from stdin and refactor slurp_file() in the process. (#192) +- NEW: Add option -o outfile for when not run from a shell and redirect '>' is not an option. (#189) +- FIX: fix tables in jo.md (#167) + 2022-01-05 1.6 - FIX: repair tests broken by AUTHORS change (#164) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jo-1.6/Makefile.am new/jo-1.7/Makefile.am --- old/jo-1.6/Makefile.am 2022-01-05 16:59:37.000000000 +0100 +++ new/jo-1.7/Makefile.am 2022-10-29 15:26:13.000000000 +0200 @@ -28,7 +28,7 @@ jo.md: jo.pandoc @test -n "$(PANDOC)" || \ { echo 'pandoc' not found during configure.; exit 1; } - $(PANDOC) -s -w markdown+simple_tables -f markdown -o $@ $< + $(PANDOC) -s -w gfm -f markdown-smart -o $@ $< endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jo-1.6/README.md new/jo-1.7/README.md --- old/jo-1.6/README.md 2022-01-05 16:59:37.000000000 +0100 +++ new/jo-1.7/README.md 2022-10-29 15:26:13.000000000 +0200 @@ -43,7 +43,7 @@ To install from the repository, you will need a C compiler as well as a relatively recent version of _automake_ and _autoconf_. ```bash -git clone git://github.com/jpmens/jo.git +git clone https://github.com/jpmens/jo.git cd jo autoreconf -i ./configure @@ -51,32 +51,63 @@ make install ``` -## Homebrew +## Install + +### Homebrew ```bash brew install jo ``` -## Ubuntu +### MacPorts + +```bash +sudo port install jo +``` + +### Ubuntu ``` apt-get install jo ``` -## Gentoo +### Gentoo ``` emerge jo ``` -## Snap +### Fedora + +``` +dnf install jo +``` + +### Snap Thanks to [Roger Light](https://twitter.com/ralight/status/1166023769623867398), _jo_ is available as a [snap package](https://snapcraft.io/jo). Use `snap install jo` from a Linux distro that supports snaps. +### Windows +```cmd +scoop install jo +``` + +### Windows WSL2 + +As shown in [#175](https://github.com/jpmens/jo/issues/175) when using _git_ on Windows WSL2 it should be necessary to disable automatic CRLF conversion in _git_ or the tests will fail: + +```cmd +git config --local core.autocrlf false +``` + +### AIX + +_jo_ builds and passes all tests on AIX 7.1 using the _autoconf_, _automake_, _gcc_, and _pkg-config_ RPMs from IBM's [AIX Toolbox for Open Source Software](https://www.ibm.com/support/pages/node/883796). The _xlclang_ compiler from IBM's xlC/C++ suite for AIX will also build _jo_. + ## Others * [voidlinux](https://github.com/voidlinux/void-packages/tree/master/srcpkgs/jo) -* [ArchLinux](https://aur.archlinux.org/packages/jo/) +* [ArchLinux](https://archlinux.org/packages/community/x86_64/jo/) * [OpenBSD](http://openports.se/textproc/jo) * [FreeBSD](https://www.freshports.org/textproc/jo) * [Guix](https://guix.gnu.org/packages/jo-1.4/) @@ -92,4 +123,4 @@ ## Credits -* `json.[ch]` by 2011 Joseph A. Adams (joeyadams3.14...@gmail.com). +* `json.[ch]` by 2011 Joseph A. Adams (joeyadams3.14159[at]gmail.com). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jo-1.6/configure.ac new/jo-1.7/configure.ac --- old/jo-1.6/configure.ac 2022-01-05 16:59:37.000000000 +0100 +++ new/jo-1.7/configure.ac 2022-10-29 15:26:13.000000000 +0200 @@ -1,5 +1,5 @@ AC_PREREQ([2.63]) -AC_INIT([jo], [1.6], [j...@mens.de]) +AC_INIT([jo], [1.7], [j...@mens.de]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_SRCDIR([jo.c]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jo-1.6/jo.c new/jo-1.7/jo.c --- old/jo-1.6/jo.c 2022-01-05 16:59:37.000000000 +0100 +++ new/jo-1.7/jo.c 2022-10-29 15:26:13.000000000 +0200 @@ -4,9 +4,11 @@ #include <stdlib.h> #include <unistd.h> #include <string.h> -#include <getopt.h> +#ifndef _AIX +# include <getopt.h> +#endif #include <ctype.h> -#ifndef WIN32 +#if !defined(WIN32) && !defined(_AIX) # include <err.h> #endif #include "json.h" @@ -44,9 +46,36 @@ static JsonNode *pile; /* pile of nested objects/arrays */ -#ifdef _WIN32 -# define err(n, s) { fprintf(stderr, s); exit(n); } -# define errx(n, f, a) { fprintf(stderr, f, a); exit(n); } +#if defined(_WIN32) || defined(_AIX) +#include <errno.h> +#include <stdarg.h> +static inline void err(int eval, const char *fmt, ...) { + int errnum = errno; + + va_list ap; + va_start(ap, fmt); + + fprintf(stderr, "jo: "); + vfprintf(stderr, fmt, ap); + fprintf(stderr, ": %s\n", strerror(errnum)); + + va_end(ap); + exit(eval); +} +static inline void errx(int eval, const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + + fprintf(stderr, "jo: "); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + + va_end(ap); + exit(eval); +} +#endif + +#if defined(_WIN32) && !defined(fseeko) # define fseeko fseek # define ftello ftell #endif @@ -57,6 +86,8 @@ #define TAG_FLAG_NUMBER (TAG_TO_FLAGS(JSON_NUMBER)) #define COERCE_MASK (TAG_FLAG_BOOL | TAG_FLAG_STRING | TAG_FLAG_NUMBER) +#define debug(format, args...) fprintf (stderr, format, args) + JsonTag flags_to_tag(int flags) { return flags / (FLAG_MASK + 1); } @@ -101,11 +132,45 @@ } } -char *slurp_file(const char* filename, size_t *out_len, bool fold_newlines) +char *slurp(FILE *fp, off_t bufblk_sz, int eos_char, size_t *out_len, bool fold_newlines) { char *buf; int i = 0; - int ch; + int ch = EOF; + off_t buffer_len = bufblk_sz; + + if ((buf = malloc(buffer_len)) == NULL) { + i = -1; + } else { + while ((ch = fgetc(fp)) != eos_char && ch != EOF) { + if (i == (buffer_len - 1)) { + buffer_len += bufblk_sz; + if ((buf = realloc(buf, buffer_len)) == NULL) { + i = -1; + break; + } + } + if (ch != '\n' || !fold_newlines) { + buf[i++] = ch; + } + } + } + if (ch == EOF && i <= 0) { + /* EOF at first read */ + if (buf) { + free(buf); + buf = NULL; + } + } else if (buf) { + buf[i] = 0; + } + *out_len = i; + return buf; +} + +char *slurp_file(const char* filename, size_t *out_len, bool fold_newlines) +{ + char *buf; off_t buffer_len; FILE *fp; bool use_stdin = strcmp(filename, "-") == 0; @@ -125,24 +190,23 @@ fseeko(fp, 0, SEEK_SET); } - if ((buf = malloc(buffer_len)) == NULL) { + buf = slurp(fp, buffer_len, EOF, out_len, fold_newlines); + if (*out_len == (size_t)-1) { errx(1, "File %s is too large to be read into memory", filename); } - while ((ch = fgetc(fp)) != EOF) { - if (i == (buffer_len - 1)) { - buffer_len += SLURP_BLOCK_SIZE; - if ((buf = realloc(buf, buffer_len)) == NULL) { - errx(1, "File %s is too large to be read into memory", filename); - } - } - if (ch != '\n' || !fold_newlines) { - buf[i++] = ch; - } - } if (!use_stdin) fclose(fp); - buf[i] = 0; - *out_len = i; - return (buf); + return buf; +} + +char *slurp_line(FILE *fp, size_t *out_len) +{ + char *buf; + + buf = slurp(fp, SLURP_BLOCK_SIZE, '\n', out_len, false); + if (*out_len == (size_t)-1) { + errx(1, "Line too large to be read into memory"); + } + return buf; } JsonNode *jo_mknull(JsonTag type) { @@ -336,7 +400,7 @@ int usage(char *prog) { - fprintf(stderr, "Usage: %s [-a] [-B] [-D] [-d keydelim] [-p] [-e] [-n] [-v] [-V] [-f file] [--] [-s|-n|-b] [word...]\n", prog); + fprintf(stderr, "Usage: %s [-a] [-B] [-D] [-d keydelim] [-p] [-e] [-n] [-o outfile] [-v] [-V] [-f file] [--] [-s|-n|-b] [word...]\n", prog); fprintf(stderr, "\tword is key=value or key@value\n"); fprintf(stderr, "\t-a creates an array of words\n"); fprintf(stderr, "\t-B disable boolean true/false/null detection\n"); @@ -348,6 +412,7 @@ fprintf(stderr, "\t-s coerce type guessing to string\n"); fprintf(stderr, "\t-b coerce type guessing to bool\n"); fprintf(stderr, "\t-n coerce type guessing to number\n"); + fprintf(stderr, "\t-o output to the given file\n"); fprintf(stderr, "\t-v show version\n"); fprintf(stderr, "\t-V show version in JSON\n"); @@ -504,7 +569,7 @@ if (len == 0) { return strdup(""); } - if (len == -1) { + if (len == (size_t)-1) { len = strlen(str); } wcssize = MultiByteToWideChar(GetACP(), 0, str, len, NULL, 0); @@ -537,7 +602,7 @@ if (len == 0) { return strdup(""); } - if (len == -1) { + if (len == (size_t)-1) { len = strlen(utf8); } wcssize = MultiByteToWideChar(CP_UTF8, 0, utf8, len, NULL, 0); @@ -595,10 +660,13 @@ { int c, key_delim = 0; bool showversion = false; - char *kv, *js_string, *progname, buf[BUFSIZ], *p; + char *kv, *js_string, *progname, *buf, *p; char *in_file = NULL, *in_str; + char *out_file = NULL; + FILE *out = stdout; size_t in_len = 0; - int ttyin = isatty(fileno(stdin)), ttyout = isatty(fileno(stdout)); + int ttyin = isatty(fileno(stdin)); + int ttyout = isatty(fileno(stdout)); int flags = 0; JsonNode *json, *op; @@ -610,7 +678,7 @@ progname = (progname = strrchr(*argv, '/')) ? progname + 1 : *argv; - while ((c = getopt(argc, argv, "aBDd:f:hpenvV")) != EOF) { + while ((c = getopt(argc, argv, "aBDd:f:hpeno:vV")) != EOF) { switch (c) { case 'a': flags |= FLAG_ARRAY; @@ -639,6 +707,9 @@ case 'n': flags |= FLAG_SKIPNULLS; break; + case 'o': + out_file = optarg; + break; case 'v': printf("jo %s\n", PACKAGE_VERSION); exit(0); @@ -683,12 +754,11 @@ if (flags & FLAG_NOSTDIN) { return(0); } - while (fgets(buf, sizeof(buf), stdin) != NULL) { - if (buf[strlen(buf) - 1] == '\n') - buf[strlen(buf) - 1] = 0; + while ((buf = slurp_line(stdin, &in_len)) != NULL && in_len > 0) { p = ttyin ? utf8_from_locale(buf, -1) : buf; append_kv(json, flags, key_delim, p); if (ttyin) utf8_free(p); + if (buf) free(buf); } } else { while ((kv = *argv++)) { @@ -747,8 +817,16 @@ exit(2); } + if (out_file != NULL) { + out = fopen(out_file, "w"); + if (out == NULL) { + perror(out_file); + errx(1, "Cannot open %s for writing", out_file); + } + ttyout = isatty(fileno(out)); + } p = ttyout ? locale_from_utf8(js_string, -1) : js_string; - printf("%s\n", p); + fprintf(out, "%s\n", p); if (ttyout) locale_free(p); free(js_string); json_delete(json); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jo-1.6/jo.md new/jo-1.7/jo.md --- old/jo-1.6/jo.md 2022-01-05 16:59:37.000000000 +0100 +++ new/jo-1.7/jo.md 2022-10-29 15:26:13.000000000 +0200 @@ -1,20 +1,13 @@ ---- -title: JO(1) User Manuals ---- - -NAME -==== +# NAME jo - JSON output from a shell -SYNOPSIS -======== +# SYNOPSIS jo \[-p\] \[-a\] \[-B\] \[-D\] \[-e\] \[-n\] \[-v\] \[-V\] \[-d -keydelim\] \[-f file\] \[--\] \[ \[-s\|-n\|-b\] word ...\] +keydelim\] \[-f file\] \[--\] \[ \[-s|-n|-b\] word ...\] -DESCRIPTION -=========== +# DESCRIPTION *jo* creates a JSON string on *stdout* from *word*s given it as arguments or read from *stdin*. If `-f` is specified, *jo* first loads @@ -40,11 +33,11 @@ *jo* normally treats *value* as a literal string value, unless it begins with one of the following characters: - value action - ------- --------------------------------------------------------------------- - @file substitute the contents of *file* as-is - %file substitute the contents of *file* in base64-encoded form - :file interpret the contents of *file* as JSON, and substitute the result +| value | action | +| ----- | ------------------------------------------------------------------- | +| @file | substitute the contents of *file* as-is | +| %file | substitute the contents of *file* in base64-encoded form | +| :file | interpret the contents of *file* as JSON, and substitute the result | Escape the special character with a backslash to prevent this interpretation. @@ -60,8 +53,7 @@ left of the operator. The file may be specified as `-` to read from *jo*'s standard input. -TYPE COERCION -============= +# TYPE COERCION *jo*'s type guesses can be overridden on a per-word basis by prefixing *word* with `-s` for *string*, `-n` for *number*, or `-b` for *boolean*. @@ -70,15 +62,15 @@ Type coercion works as follows: - word -s -n -b default - -------------- ------------------ ----------- ----------- ------------------ - a= "a":\"\" "a":0 "a":false "a":null - a=string "a":"string" "a":6 "a":true "a":"string" - a=\"quoted\" "a":"\"quoted\"" "a":8 "a":true "a":"\"quoted\"" - a=12345 "a":"12345" "a":12345 "a":true "a":12345 - a=true "a":"true" "a":1 "a":true "a":true - a=false "a":"false" "a":0 "a":false "a":false - a=null "a":\"\" "a":0 "a":false "a":null +| word | \-s | \-n | \-b | default | +| :--------- | :------------- | :-------- | :-------- | :------------- | +| a= | "a":"" | "a":0 | "a":false | "a":null | +| a=string | "a":"string" | "a":6 | "a":true | "a":"string" | +| a="quoted" | "a":""quoted"" | "a":8 | "a":true | "a":""quoted"" | +| a=12345 | "a":"12345" | "a":12345 | "a":true | "a":12345 | +| a=true | "a":"true" | "a":1 | "a":true | "a":true | +| a=false | "a":"false" | "a":0 | "a":false | "a":false | +| a=null | "a":"" | "a":0 | "a":false | "a":null | Coercing a non-number string to number outputs the *length* of the string. @@ -89,8 +81,7 @@ Type coercion only applies to `key=value` words, and individual words in a `-a` array. Coercing other words has no effect. -EXAMPLES -======== +# EXAMPLES Create an object. Note how the incorrectly-formatted float value becomes a string: @@ -143,7 +134,7 @@ $ jo switch=true morning@0 {"switch":true,"morning":false} - + $ jo -B switch=true morning@0 {"switch":"true","morning":false} @@ -195,7 +186,7 @@ $ jo < /dev/null {} - + $ MY_ARRAY=(a=1 b=2) $ jo -a "${MY_ARRAY[@]}" < /dev/null ["a=1","b=2"] @@ -213,7 +204,7 @@ "g": 14, "h": true } - + $ jo -a -- -s 123 -n "This is a test" -b C_Rocks 456 ["123",14,true,456] @@ -223,10 +214,10 @@ $ jo program=jo authors=@AUTHORS {"program":"jo","authors":"Jan-Piet Mens <jpm...@gmail.com>"} - + $ jo filename=AUTHORS content=%AUTHORS {"filename":"AUTHORS","content":"SmFuLVBpZXQgTWVucyA8anBtZW5zQGdtYWlsLmNvbT4K"} - + $ jo nested=:nested.json {"nested":{"field1":123,"field2":"abc"}} @@ -234,20 +225,20 @@ $ jo name="JP Mens" twitter='\@jpmens' {"name":"JP Mens","twitter":"@jpmens"} - + $ jo char=" " URIescape=\\%20 {"char":" ","URIescape":"%20"} - + $ jo action="split window" vimcmd="\:split" {"action":"split window","vimcmd":":split"} -Read element values from a file in order to overcome ARG_MAX limits +Read element values from a file in order to overcome ARG\_MAX limits during object assignment: $ ls | jo -a > child.json $ jo files:=child.json {"files":["AUTHORS","COPYING","ChangeLog" .... - + $ ls *.c | jo -a > source.json; ls *.h | jo -a > headers.json $ jo -a :source.json :headers.json [["base64.c","jo.c","json.c"],["base64.h","json.h"]] @@ -256,7 +247,7 @@ $ jo -f source.json 1 | jo -f - 2 3 ["base64.c","jo.c","json.c",1,2,3] - + $ curl -s 'https://noembed.com/embed?url=https://www.youtube.com/watch?v=dQw4w9WgXcQ' | jo -f - status=Rickrolled { ...., "type":"video","author_url":"https://www.youtube.com/user/RickAstleyVEVO","status":"Rickrolled"} @@ -267,42 +258,33 @@ $ jo -D a=1 b=2 a=3 {"a":3,"b":2} -OPTIONS -======= +# OPTIONS *jo* understands the following global options. --a -: Interpret the list of *words* as array values and produce an array + - \-a + Interpret the list of *words* as array values and produce an array instead of an object. - --B -: By default, *jo* interprets the strings "`true`" and "`false`" as + - \-B + By default, *jo* interprets the strings "`true`" and "`false`" as boolean elements `true` and `false` respectively, and "`null`" as `null`. Disable with this option. - --D -: Deduplicate object keys. - --e -: Ignore empty stdin (i.e.??don't produce a diagnostic error when + - \-D + Deduplicate object keys. + - \-e + Ignore empty stdin (i.e. don't produce a diagnostic error when *stdin* is empty) - --n -: Do not add keys with empty values. - --p -: Pretty-print the JSON string on output instead of the terse one-line + - \-n + Do not add keys with empty values. + - \-p + Pretty-print the JSON string on output instead of the terse one-line output it prints by default. + - \-v + Show version and exit. + - \-V + Show version as a JSON object and exit. --v -: Show version and exit. - --V -: Show version as a JSON object and exit. - -BUGS -==== +# BUGS Probably. @@ -323,31 +305,26 @@ message to print, but the output contains garbage anyway. This was designed thusly. -RETURN CODES -============ +# RETURN CODES *jo* exits with a code 0 on success and non-zero on failure after indicating what caused the failure. -AVAILABILITY -============ +# AVAILABILITY <http://github.com/jpmens/jo> -CREDITS -======= +# CREDITS -- This program uses `json.[ch]`, by Joseph A. Adams. + - This program uses `json.[ch]`, by Joseph A. Adams. -SEE ALSO -======== +# SEE ALSO -- <https://stedolan.github.io/jq/> -- <https://github.com/micha/jsawk> -- <https://github.com/jtopjian/jsed> -- strtod(3) + - <https://stedolan.github.io/jq/> + - <https://github.com/micha/jsawk> + - <https://github.com/jtopjian/jsed> + - strtod(3) -AUTHOR -====== +# AUTHOR Jan-Piet Mens <http://jpmens.net> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jo-1.6/json.c new/jo-1.7/json.c --- old/jo-1.6/json.c 2022-01-05 16:59:37.000000000 +0100 +++ new/jo-1.7/json.c 2022-10-29 15:26:13.000000000 +0200 @@ -34,9 +34,9 @@ exit(EXIT_FAILURE); \ } while (0) -#ifdef _WIN32 +#if defined(_WIN32) || defined(_AIX) # define failx(e, n, f, ...) if (!(e)) { \ - fprintf(stderr, "JSON_ERR: " f, __VA_ARGS__); \ + fprintf(stderr, "jo: JSON_ERR: " f "\n", __VA_ARGS__); \ exit(n); \ } #else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jo-1.6/meson.build new/jo-1.7/meson.build --- old/jo-1.6/meson.build 2022-01-05 16:59:37.000000000 +0100 +++ new/jo-1.7/meson.build 2022-10-29 15:26:13.000000000 +0200 @@ -1,5 +1,5 @@ project('jo', 'c', - version: '1.6', + version: '1.7', license: 'GPL-2.0-or-later', meson_version: '>=0.57.0', default_options: ['warning_level=3', 'optimization=2']) @@ -56,12 +56,13 @@ command: [pandoc_commands, '@OUTPUT@', '@INPUT@']).full_path() run_command(pandoc_commands, join_paths(meson.current_build_dir(), 'jo.1'), - join_paths(meson.current_source_dir(), 'jo.pandoc')) + join_paths(meson.current_source_dir(), 'jo.pandoc'), + check: false) custom_target('jo.md', output: 'jo.md', input: 'jo.pandoc', build_always_stale: true, - command: [pandoc, '-s', '-w', 'markdown+simple_tables', '-f', 'markdown', '-o', '@OUTPUT@', '@INPUT@']) + command: [pandoc, '-s', '-w', 'gfm', '-f', 'markdown-smart', '-o', '@OUTPUT@', '@INPUT@']) endif install_man(jo1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jo-1.6/rpm-build/jo.spec new/jo-1.7/rpm-build/jo.spec --- old/jo-1.6/rpm-build/jo.spec 2022-01-05 16:59:37.000000000 +0100 +++ new/jo-1.7/rpm-build/jo.spec 2022-10-29 15:26:13.000000000 +0200 @@ -1,5 +1,5 @@ Name: jo -Version: 1.6 +Version: 1.7 Release: 2%{?dist} Summary: jo is a small utility to create JSON objects @@ -39,6 +39,8 @@ %changelog +* Sat Oct 29 2022 JP Mens <j...@mens.de> 1.7 +- bump version -- see Changelog * Sat Jul 18 2020 JP Mens <j...@mens.de> 1.4 - bump version -- see Changelog * Tue Apr 28 2020 Christian Albrecht <c...@albix.de> 1.3-2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jo-1.6/snapcraft.yaml new/jo-1.7/snapcraft.yaml --- old/jo-1.6/snapcraft.yaml 2022-01-05 16:59:37.000000000 +0100 +++ new/jo-1.7/snapcraft.yaml 2022-10-29 15:26:13.000000000 +0200 @@ -1,5 +1,5 @@ name: jo -version: "1.6" +version: "1.7" summary: jo description: | This is jo, a small utility to create JSON objects or arrays.