relpipe-data/release-v0.14.xml
author František Kučera <franta-hg@frantovo.cz>
Wed, 30 Oct 2019 18:05:46 +0100
branchv_0
changeset 282 ec02133045a3
parent 276 relpipe-data/release-v0.13.xml@cfaf1fa94154
child 297 192b0059a6c4
permissions -rw-r--r--
Release v0.14 – SQL, AWK, Bash completion, GPLv3

<stránka
	xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro">
	
	<nadpis>Release v0.14</nadpis>
	<perex>sixth public release of Relational pipes</perex>
	<m:release>v0.14</m:release>

	<text xmlns="http://www.w3.org/1999/xhtml">
		<p>
			We are pleased to introduce you the new development version of <m:name/>.
			This release brings the Bash completion scripts, improved SQL and AWK transformations and fixes the license version.
		</p>
		
		<ul>
			<li>
				<strong>Bash completion</strong>:
				thanks to the Bash completion scripts, the shell now suggests/completes the CLI arguments of these commands:
				<code>relpipe-in-filesystem</code>, 
				<code>relpipe-in-xmltable</code>, 
				<code>relpipe-tr-awk</code>, 
				<code>relpipe-tr-guile</code>, 
				<code>relpipe-tr-sql</code>,
				<code>relpipe-in-sql</code>.
			</li>
			
			<li>
				<strong>Improved SQL transformation</strong>:
				the <code>relpipe-tr-sql</code> can now work also in the <code>relpipe-in-sql</code> mode (symlink to the same binary),
				so it can be used as an input filter for reading SQL scripts (instead of relational data) or as an SQLite client (options <code>--file</code> and <code>--file-keep</code>, see examples).
				There are also new options <code>--copy</code> and <code>--copy-renamed</code> for copying particular (or all) relations from the input to the output.
				Such relations are specified by a regular expression and can be renamed using regular expressions replacement string.
			</li>
			
			<li>
				<strong>Improved AWK transformation</strong>:
				this tool now supports the <code>--where</code> option, which can be used in addition to the more generic <code>--for-each</code> option.
				The argument syntax now better expresses the intention (filtering records) and matches the syntax of the <code>relpipe-tr-guile</code> tool.
			</li>
			
			<li>
				<strong>GNU GPLv3 license</strong>: the license version is now fixed to version 3. In the future, we can upgrade the license.
			</li>
			
		</ul>
		
		<p>
			See the <m:a href="examples">examples</m:a> and <m:a href="screenshots">screenshots</m:a> pages for details.
		</p>
		
		<p>
			Please note that this is still a development relasease and thus the API (libraries, CLI arguments, formats) might and will change.
			Any suggestions, ideas and bug reports are welcome in our <m:a href="contact">mailing list</m:a>.
		</p>
		
		<h3>Data types</h3>
		<ul>
			<li m:since="v0.8">boolean</li>
			<li m:since="v0.8">variable unsigned integer (prototype)</li>
			<li m:since="v0.8">string in UTF-8</li>
		</ul>
		<h3>Inputs</h3>
		<ul>
			<li m:since="v0.11">Recfile</li>
			<li m:since="v0.9">XML</li>
			<li m:since="v0.13">XMLTable</li>
			<li m:since="v0.9">CSV</li>
			<li m:since="v0.9">file system</li>
			<li m:since="v0.8">CLI</li>
			<li m:since="v0.8">fstab</li>
			<li m:since="v0.14">SQL script</li>
		</ul>
		<h3>Transformations</h3>
		<ul>
			<li m:since="v0.13">sql: filtering and transformations using the SQL language</li>
			<li m:since="v0.12">awk: filtering and transformations using the classic AWK tool and language</li>
			<li m:since="v0.10">guile: filtering and transformations defined in the Scheme language using GNU Guile</li>
			<li m:since="v0.8">grep: regular expression filter, removes unwanted records from the relation</li>
			<li m:since="v0.8">cut: regular expression attribute cutter (removes or duplicates attributes and can also DROP whole relation)</li>
			<li m:since="v0.8">sed: regular expression replacer</li>
			<li m:since="v0.8">validator: just a pass-through filter that crashes on invalid data</li>
			<li m:since="v0.8">python: highly experimental</li>
		</ul>
		<h3>Outputs</h3>
		<ul>
			<li m:since="v0.11">ASN.1 BER</li>
			<li m:since="v0.11">Recfile</li>
			<li m:since="v0.9">CSV</li>
			<li m:since="v0.8">tabular</li>
			<li m:since="v0.8">XML</li>
			<li m:since="v0.8">nullbyte</li>
			<li m:since="v0.8">GUI in Qt</li>
			<li m:since="v0.8">ODS (LibreOffice)</li>
		</ul>
		
		<p>
			Instalation was tested on Debian GNU/Linux 9.6.
			The process should be similar on other distributions.
		</p>
		
		<m:pre src="examples/release-v0.14.sh" jazyk="bash" odkaz="ano"/>
		
		<p>
			<m:name/> are modular thus you can download and install only parts you need (the libraries are needed always).
			Tools <code>out-gui.qt</code> and <code>tr-python</code> require additional libraries and are not built by default.
		</p>
		
		<p>
			The module <code>relpipe-in-filesystem</code> uses C++ filesystem API which is supported since GCC 8.
			This module can be compiled and seems usable even with GCC 6, but requires some patching (switch to the experimental API):
		</p>
		
		<m:pre jazyk="bash"><![CDATA[sed 's@#include <filesystem>@#include <experimental/filesystem>@g' -i "$RELPIPE_SRC"/relpipe-in-filesystem.cpp/src/FileAttributeFinder.h "$RELPIPE_SRC"/relpipe-in-filesystem.cpp/src/XattrAttributeFinder.h "$RELPIPE_SRC"/relpipe-in-filesystem.cpp/src/FilesystemCommand.h "$RELPIPE_SRC"/relpipe-in-filesystem.cpp/src/AttributeFinder.h
sed 's@std::filesystem@std::experimental::filesystem@g' -i "$RELPIPE_SRC"/relpipe-in-filesystem.cpp/src/FileAttributeFinder.h "$RELPIPE_SRC"/relpipe-in-filesystem.cpp/src/XattrAttributeFinder.h "$RELPIPE_SRC"/relpipe-in-filesystem.cpp/src/FilesystemCommand.h "$RELPIPE_SRC"/relpipe-in-filesystem.cpp/src/AttributeFinder.h
sed 's/.*PROPERTY CXX_STANDARD.*/#\0/g' -i "$RELPIPE_SRC"/relpipe-in-filesystem.cpp/src/CMakeLists.txt]]></m:pre>

		<p>
			The module <code>relpipe-tr-guile</code> uses GNU Guile 2.2 but can also work with 2.0.
			In such case, it requires this patch:
		</p>
		
		<m:pre jazyk="bash"><![CDATA[sed 's/guile-2\.2/guile-2.0/g' -i "$RELPIPE_SRC"/relpipe-tr-guile.cpp/src/CMakeLists.txt]]></m:pre>

	</text>

</stránka>