texlive[54640] Master/texmf-dist: arara

commits+karl at tug.org commits+karl at tug.org
Sat Apr 11 00:00:34 CEST 2020


Revision: 54640
          http://tug.org/svn/texlive?view=revision&revision=54640
Author:   karl
Date:     2020-04-11 00:00:34 +0200 (Sat, 11 Apr 2020)
Log Message:
-----------
arara

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/support/arara/README.md
    trunk/Master/texmf-dist/doc/support/arara/arara-manual.pdf
    trunk/Master/texmf-dist/doc/support/arara/arara-manual.tex
    trunk/Master/texmf-dist/doc/support/arara/arara.sty
    trunk/Master/texmf-dist/doc/support/arara/chapters/cli.tex
    trunk/Master/texmf-dist/doc/support/arara/chapters/concepts.tex
    trunk/Master/texmf-dist/doc/support/arara/chapters/deploying.tex
    trunk/Master/texmf-dist/doc/support/arara/chapters/introduction.tex
    trunk/Master/texmf-dist/doc/support/arara/chapters/logging.tex
    trunk/Master/texmf-dist/doc/support/arara/chapters/methods.tex
    trunk/Master/texmf-dist/doc/support/arara/chapters/mvel.tex
    trunk/Master/texmf-dist/doc/support/arara/chapters/rules.tex
    trunk/Master/texmf-dist/doc/support/arara/chapters/yaml.tex
    trunk/Master/texmf-dist/scripts/arara/arara.jar
    trunk/Master/texmf-dist/scripts/arara/rules/animate.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/asymptote.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/bib2gls.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/biber.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/bibtex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/bibtex8.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/bibtexu.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/clean.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/csplain.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/datatooltk.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/dvipdfm.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/dvipdfmx.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/dvips.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/dvipspdf.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/dvisvgm.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/etex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/frontespizio.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/halt.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/indent.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/knitr.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/latex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/latexmk.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/luahbtex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/lualatex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/luatex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/make.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/makeglossaries.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/makeglossarieslite.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/makeindex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/metapost.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/nomencl.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/pbibtex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/pdfcsplain.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/pdflatex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/pdftex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/pdftk.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/platex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/ps2pdf.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/ptex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/sketch.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/songidx.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/tex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/texindy.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/tikzmake.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/upbibtex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/uplatex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/uptex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/xdvipdfmx.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/xelatex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/xetex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/xindy.yaml

Added Paths:
-----------
    trunk/Master/texmf-dist/scripts/arara/rules/context.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/convert.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/detex.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/fig2dev.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/qpdf.yaml
    trunk/Master/texmf-dist/scripts/arara/rules/texcount.yaml
    trunk/Master/texmf-dist/source/support/arara/arara-5.1.0-src.zip

Removed Paths:
-------------
    trunk/Master/texmf-dist/source/support/arara/build.gradle.kts
    trunk/Master/texmf-dist/source/support/arara/src/main/java/org/islandoftex/arara/utils/
    trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/Arara.kt
    trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/CLI.kt
    trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/configuration/
    trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/filehandling/
    trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/localization/
    trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/model/
    trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/ruleset/
    trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/utils/
    trunk/Master/texmf-dist/source/support/arara/src/main/resources/org/islandoftex/arara/configuration/
    trunk/Master/texmf-dist/source/support/arara/src/main/resources/org/islandoftex/arara/localization/
    trunk/Master/texmf-dist/source/support/arara/src/test/kotlin/org/islandoftex/arara/filehandling/
    trunk/Master/texmf-dist/source/support/arara/src/test/kotlin/org/islandoftex/arara/localization/
    trunk/Master/texmf-dist/source/support/arara/src/test/kotlin/org/islandoftex/arara/model/
    trunk/Master/texmf-dist/source/support/arara/src/test/kotlin/org/islandoftex/arara/utils/
    trunk/Master/texmf-dist/source/support/arara/src/test/resources/executiontests/changes/
    trunk/Master/texmf-dist/source/support/arara/src/test/resources/executiontests/conditionals/
    trunk/Master/texmf-dist/source/support/arara/src/test/resources/executiontests/directive-with-options/
    trunk/Master/texmf-dist/source/support/arara/src/test/resources/executiontests/foreign-extension/
    trunk/Master/texmf-dist/source/support/arara/src/test/resources/executiontests/halt/
    trunk/Master/texmf-dist/source/support/arara/src/test/resources/executiontests/halt-error/
    trunk/Master/texmf-dist/source/support/arara/src/test/resources/executiontests/invalid-config/
    trunk/Master/texmf-dist/source/support/arara/src/test/resources/executiontests/known-extension/
    trunk/Master/texmf-dist/source/support/arara/src/test/resources/executiontests/sessions/
    trunk/Master/texmf-dist/source/support/arara/src/test/resources/executiontests/simple-directive/

Modified: trunk/Master/texmf-dist/doc/support/arara/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/support/arara/README.md	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/doc/support/arara/README.md	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 ![arara](https://i.stack.imgur.com/hjUsN.png)
 
-# arara
+# arara v5.1.0
 
 ![Language: Kotlin](https://img.shields.io/badge/Language-Kotlin-blue.svg?style=flat-square)
 ![Minimum JRE: 8.0](https://img.shields.io/badge/Minimum_JRE-8-blue.svg?style=flat-square)
@@ -10,8 +10,6 @@
 way to automate the daily TeX workflow for users and also package writers. Users
 might write their own rules when the provided ones do not suffice.
 
-Current stable release: 5.0.2
-
 > Please note that `arara` recently moved. We are proud to announce that
 > `arara` is now part of the [Island of TeX](https://gitlab.com/islandoftex).
 > The new address is https://gitlab.com/islandoftex/arara. The old GitHub
@@ -46,11 +44,11 @@
  ensured that a green tick means `arara` passes the test suite and is ready to
  be tested. However, that is *not* meant you can use the executable artifacts of
  the builds *for productive use*.
- 
+
  Development of `arara` takes place in the development branch. Feel free to be
  one of our testers and enjoy the latest features and bug fixes by building from
- there. 
- 
+ there.
+
 ## Support
 
 We use a [Gitter](https://gitter.im/cereda/arara) chatroom for discussing things
@@ -57,7 +55,7 @@
 related to `arara`. You are more than welcome to come join the fun and say *hi!*
 to us. We also have the [issues](https://gitlab.com/islandoftex/arara/issues)
 section in our repository as a valid channel to report problems, bugs and
-suggest improvements. 
+suggest improvements.
 
 ## Localization
 
@@ -86,7 +84,7 @@
 
 ## License
 
-This application is licensed under the 
+This application is licensed under the
 [New BSD License](https://opensource.org/licenses/BSD-3-Clause). Please
 note that the New BSD License has been verified as a GPL-compatible free
 software license by the [Free Software Foundation](http://www.fsf.org/), and

Modified: trunk/Master/texmf-dist/doc/support/arara/arara-manual.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/arara/arara-manual.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/arara/arara-manual.tex	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/doc/support/arara/arara-manual.tex	2020-04-10 22:00:34 UTC (rev 54640)
@@ -42,8 +42,8 @@
 \usepackage[margin=2.5cm]{geometry}
 \usepackage{arara}
 
-\newcommand{\araraversion}{5.0}
- 
+\newcommand{\araraversion}{5.1}
+
 \begin{document}
 
 \begin{titlingpage}

Modified: trunk/Master/texmf-dist/doc/support/arara/arara.sty
===================================================================
--- trunk/Master/texmf-dist/doc/support/arara/arara.sty	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/doc/support/arara/arara.sty	2020-04-10 22:00:34 UTC (rev 54640)
@@ -125,7 +125,7 @@
     shift={([xshift=0.35em, yshift=0.31em]frame.north west)},
     scale=.11
   ]
-  
+
   \path[fill=#1!5] (104.4280,104.4280) circle (2.9472cm);
   \path[shift={(-46.913,-45.374)},fill=#1] (88.7990,180.6000) --
     (119.5860,149.8020) -- (88.7990,119.0130) -- (120.5410,87.2560) --
@@ -146,7 +146,7 @@
     shift={([xshift=0.35em, yshift=0.31em]frame.north west)},
     scale=.11
   ]
-  
+
   \path[fill=#1!5] (209.4880,104.7460) .. controls (209.4880,162.5980) and
     (162.5940,209.4910) .. (104.7430,209.4910) .. controls (46.8930,209.4910) and
     (0.0000,162.5970) .. (0.0000,104.7460) .. controls (0.0000,46.8950) and
@@ -193,7 +193,7 @@
     shift={([xshift=0.35em, yshift=0.31em]frame.north west)},
     scale=.11
   ]
-  
+
     \path[fill=#1!5] (104.4310,104.4310) circle (2.9473cm);
     \begin{scope}[shift={(-46.694,-45.371)}]
       \path[fill=#1] (139.1560,93.9220) .. controls (142.1760,91.1310) and
@@ -236,7 +236,7 @@
     shift={([xshift=0.35em, yshift=0.31em]frame.north west)},
     scale=.11
   ]
-  
+
     \path[fill=#1!5] (104.4280,104.4280) circle (2.9472cm);
     \begin{scope}[shift={(-46.08801,-45.37)}]
       \path[fill=#1] (113.9190,187.9100) -- (127.1980,200.4160) --
@@ -259,7 +259,7 @@
     shift={([xshift=0.35em, yshift=0.31em]frame.north west)},
     scale=.11
   ]
-  
+
     \path[fill=#1!5] (209.4910,104.7440) .. controls (209.4910,162.5960) and
       (162.5940,209.4880) .. (104.7470,209.4880) .. controls (46.8950,209.4880) and
       (0.0000,162.5950) .. (0.0000,104.7440) .. controls (0.0000,46.8930) and

Modified: trunk/Master/texmf-dist/doc/support/arara/chapters/cli.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/arara/chapters/cli.tex	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/doc/support/arara/chapters/cli.tex	2020-04-10 22:00:34 UTC (rev 54640)
@@ -210,8 +210,8 @@
 The \opbox{{-}max-loops} option is used to redefine the maximum number of loops our tool will allow for potentially infinite iterations. Any positive integer can be used as the \prbox{number} value for this option. An execution of the previous directive with a lower maximum number of loops is shown as follows:
 
 \begin{codebox}{Terminal}{teal}{\icnote}{white}
-$ arara -m 2 doc8.tex 
-  __ _ _ __ __ _ _ __ __ _ 
+$ arara -m 2 doc8.tex
+  __ _ _ __ __ _ _ __ __ _
  / _` | '__/ _` | '__/ _` |
 | (_| | | | (_| | | | (_| |
  \__,_|_|  \__,_|_|  \__,_|
@@ -230,7 +230,7 @@
 \item[\describeop{n}{dry-run}] This option makes \arara\ go through all the motions of running tasks and subtasks, but with no actual calls. It is a very useful feature for testing the sequence of underlying system commands to be performed on a file. For instance, consider the following execution:
 
 \begin{codebox}{Terminal}{teal}{\icnote}{white}
-$ arara -n doc5.tex 
+$ arara -n doc5.tex
   __ _ _ __ __ _ _ __ __ _
  / _` | '__/ _` | '__/ _` |
 | (_| | | | (_| | | | (_| |
@@ -242,22 +242,22 @@
 [DR] (PDFLaTeX) PDFLaTeX engine
 -----------------------------------------------------------------
 Author: Island of TeX
-About to run: [ pdflatex, /home/paulo/Downloads/doc5.tex ] @ 
+About to run: [ pdflatex, /home/paulo/Downloads/doc5.tex ] @
 
 [DR] (BibTeX) The BibTeX reference management software
 -----------------------------------------------------------------
 Author: Island of TeX
-About to run: [ bibtex, doc5 ] @ 
+About to run: [ bibtex, doc5 ] @
 
 [DR] (PDFLaTeX) PDFLaTeX engine
 -----------------------------------------------------------------
 Author: Island of TeX
-About to run: [ pdflatex, /home/paulo/Downloads/doc5.tex ] @ 
+About to run: [ pdflatex, /home/paulo/Downloads/doc5.tex ] @
 
 [DR] (PDFLaTeX) PDFLaTeX engine
 -----------------------------------------------------------------
 Author: Island of TeX
-About to run: [ pdflatex, /home/paulo/Downloads/doc5.tex ] @ 
+About to run: [ pdflatex, /home/paulo/Downloads/doc5.tex ] @
 
 Total: 0.23 seconds
 \end{codebox}
@@ -285,7 +285,7 @@
 
 \begin{codebox}{Terminal}{teal}{\icnote}{white}
 $ arara -p twopdftex doc9.tex
-  __ _ _ __ __ _ _ __ __ _ 
+  __ _ _ __ __ _ _ __ __ _
  / _` | '__/ _` | '__/ _` |
 | (_| | | | (_| | | | (_| |
  \__,_|_|  \__,_|_|  \__,_|
@@ -299,7 +299,7 @@
 Total: 0.96 seconds
 \end{codebox}
 
-It is important to note that this is just a directive-based preamble and nothing else, so a line other than a directive is discarded. Line breaks and conditionals are supported. Trying to exploit this area for other purposes will not work. The preamble specification in the configuration file is detailed in Section~\ref{sec:basicstructure}, on page~\pageref{sec:basicstructure}. 
+It is important to note that this is just a directive-based preamble and nothing else, so a line other than a directive is discarded. Line breaks and conditionals are supported. Trying to exploit this area for other purposes will not work. The preamble specification in the configuration file is detailed in Section~\ref{sec:basicstructure}, on page~\pageref{sec:basicstructure}.
 
 \item[\describeopp{t}{timeout}{number}] This option sets an execution timeout for every task, in milliseconds. If the timeout is reached before the task ends, \arara\ will kill it and halt the execution. Any positive integer can be used as the \prbox{number} value for this option. Of course, use a sensible value to allow proper time for a task to be executed. For instance, consider the following recursive call:
 
@@ -312,7 +312,7 @@
 
 \begin{codebox}{Terminal}{teal}{\icnote}{white}
 $ arara --timeout 3000 doc9.tex
-  __ _ _ __ __ _ _ __ __ _ 
+  __ _ _ __ __ _ _ __ __ _
  / _` | '__/ _` | '__/ _` |
 | (_| | | | (_| | | | (_| |
  \__,_|_|  \__,_|_|  \__,_|
@@ -379,7 +379,7 @@
 
 \begin{codebox}{Terminal}{teal}{\icnote}{white}
 $ arara doc11.tex
-  __ _ _ __ __ _ _ __ __ _ 
+  __ _ _ __ __ _ _ __ __ _
  / _` | '__/ _` | '__/ _` |
 | (_| | | | (_| | | | (_| |
  \__,_|_|  \__,_|_|  \__,_|
@@ -396,7 +396,7 @@
 
 \begin{codebox}{Terminal}{teal}{\icnote}{white}
 $ arara doc11
-  __ _ _ __ __ _ _ __ __ _ 
+  __ _ _ __ __ _ _ __ __ _
  / _` | '__/ _` | '__/ _` |
 | (_| | | | (_| | | | (_| |
  \__,_|_|  \__,_|_|  \__,_|
@@ -414,7 +414,7 @@
 
 \begin{codebox}{Terminal}{teal}{\icnote}{white}
 $ arara doc11.
-  __ _ _ __ __ _ _ __ __ _ 
+  __ _ _ __ __ _ _ __ __ _
  / _` | '__/ _` | '__/ _` |
 | (_| | | | (_| | | | (_| |
  \__,_|_|  \__,_|_|  \__,_|

Modified: trunk/Master/texmf-dist/doc/support/arara/chapters/concepts.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/arara/chapters/concepts.tex	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/doc/support/arara/chapters/concepts.tex	2020-04-10 22:00:34 UTC (rev 54640)
@@ -10,7 +10,7 @@
 A \emph{rule} is a formal description of how \arara\ handles a certain task. For instance, if we want to use \rbox{pdflatex} with our tool, we should have a rule for that. Directives are mapped to rules, so a call to a non-existent rule \rbox{foo}, for instance, will indeed raise an error:
 
 \begin{codebox}{Terminal}{teal}{\icnote}{white}
-  __ _ _ __ __ _ _ __ __ _ 
+  __ _ _ __ __ _ _ __ __ _
  / _` | '__/ _` | '__/ _` |
 | (_| | | | (_| | | | (_| |
  \__,_|_|  \__,_|_|  \__,_|
@@ -263,7 +263,7 @@
 When handling parametrized directives, \arara\ always checks if directive parameters and rule arguments match. If we try to inject a non-existent parameter in a parametrized directive, the tool will raise an error about it:
 
 \begin{codebox}{Terminal}{teal}{\icnote}{white}
-  __ _ _ __ __ _ _ __ __ _ 
+  __ _ _ __ __ _ _ __ __ _
  / _` | '__/ _` | '__/ _` |
 | (_| | | | (_| | | | (_| |
  \__,_|_|  \__,_|_|  \__,_|

Modified: trunk/Master/texmf-dist/doc/support/arara/chapters/deploying.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/arara/chapters/deploying.tex	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/doc/support/arara/chapters/deploying.tex	2020-04-10 22:00:34 UTC (rev 54640)
@@ -9,7 +9,7 @@
 
 From the early development stages, our tool employs a very straightforward directory structure. In short, we provide the \abox[araracolour]{ARARA\_HOME} alias to the directory path in which the \rbox[araracolour]{arara.jar} Java archive file is located. This particular file is the heart and soul of our tool and dictates the default rule search path, which is a special directory named \abox[araracolour]{rules/} available from the same level. This directory contains all rules specified in the YAML format, as seen in Section~\ref{sec:rule}, on page~\pageref{sec:rule}. The structure overview is presented as follows.
 
-\vspace{1em} 
+\vspace{1em}
 
 {\centering\begin{forest}
 for tree={
@@ -51,7 +51,7 @@
 
 The tool has found a comfortable home inside my system! Observe that the full path of the \abox[araracolour]{ARARA\_HOME} reference points out to \abox[araracolour]{/opt/paulo/arara} since this is my deployment location of choice. The resulting structure overview, from the root directory, is presented as follows:
 
-\vspace{1em} 
+\vspace{1em}
 
 {\centering\begin{forest}
 for tree={
@@ -216,4 +216,4 @@
 /usr/local/bin/arara
 \end{codebox}
 
-The \rbox{which} command shows the full path of the executable name provided as parameter. This particular utility does this by searching for an executable or script in the directories listed in the \abox[araracolour]{PATH} environment variable. Be mindful that aliases and shell functions are listed as well.
\ No newline at end of file
+The \rbox{which} command shows the full path of the executable name provided as parameter. This particular utility does this by searching for an executable or script in the directories listed in the \abox[araracolour]{PATH} environment variable. Be mindful that aliases and shell functions are listed as well.

Modified: trunk/Master/texmf-dist/doc/support/arara/chapters/introduction.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/arara/chapters/introduction.tex	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/doc/support/arara/chapters/introduction.tex	2020-04-10 22:00:34 UTC (rev 54640)
@@ -28,7 +28,7 @@
 
 \begin{codebox}{Terminal}{teal}{\icnote}{white}
 $ arara hello.tex
-  __ _ _ __ __ _ _ __ __ _ 
+  __ _ _ __ __ _ _ __ __ _
  / _` | '__/ _` | '__/ _` |
 | (_| | | | (_| | | | (_| |
  \__,_|_|  \__,_|_|  \__,_|
@@ -62,8 +62,8 @@
 For now, do not worry too much about the terms, we will come back to them later on, in Chapter~\ref{chap:importantconcepts}, on page~\pageref{chap:importantconcepts}. It suffices to say that \arara\ expects \emph{you} to provide a list of tasks, and this is done by inserting special comments in the source file. Let us see how \arara\ behaves with this updated code:
 
 \begin{codebox}{Terminal}{teal}{\icnote}{white}
-$ arara hello.tex 
-  __ _ _ __ __ _ _ __ __ _ 
+$ arara hello.tex
+  __ _ _ __ __ _ _ __ __ _
  / _` | '__/ _` | '__/ _` |
 | (_| | | | (_| | | | (_| |
  \__,_|_|  \__,_|_|  \__,_|
@@ -81,7 +81,7 @@
 \section{Core concepts}
 \label{sec:coreconcepts}
 
-When adding a directive in our source code, we are explicitly telling the tool what we want it to do, but I am afraid that is not sufficient at all. So far, \arara\ knows \emph{what} to do, but now it needs to know \emph{how} the task should be done. If we want \arara\ to run \rbox{pdflatex} on \rbox{hello.tex}, we need to have instructions telling our tool how to run that specific application. This particular sequence of instructions is referred as a \emph{rule} in our context. 
+When adding a directive in our source code, we are explicitly telling the tool what we want it to do, but I am afraid that is not sufficient at all. So far, \arara\ knows \emph{what} to do, but now it needs to know \emph{how} the task should be done. If we want \arara\ to run \rbox{pdflatex} on \rbox{hello.tex}, we need to have instructions telling our tool how to run that specific application. This particular sequence of instructions is referred as a \emph{rule} in our context.
 
 \begin{messagebox}{Note on rules}{attentioncolour}{\icattention}{black}
 Although the core team provides a lot of rules shipped with \arara\ out of the box, with the possibility of extending the set by adding more rules, some users might find this decision rather annoying, since other tools have most of their rules hard-coded, making the automation process even more transparent. However, since \arara\ does not rely on a specific automation or compilation scheme, it becomes more extensible. The use of directives in the source code make the automation steps more fluent, which allows the specification of complex workflows much easier.

Modified: trunk/Master/texmf-dist/doc/support/arara/chapters/logging.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/arara/chapters/logging.tex	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/doc/support/arara/chapters/logging.tex	2020-04-10 22:00:34 UTC (rev 54640)
@@ -16,7 +16,7 @@
 \section{System information}
 \label{sec:systeminformation}
 
-The very first entry to appear in the log file is the current version of \arara. 
+The very first entry to appear in the log file is the current version of \arara.
 
 \begin{codebox}{Log file}{teal}{\icnote}{white}
 Welcome to arara 5.0.0!

Modified: trunk/Master/texmf-dist/doc/support/arara/chapters/methods.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/arara/chapters/methods.tex	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/doc/support/arara/chapters/methods.tex	2020-04-10 22:00:34 UTC (rev 54640)
@@ -597,7 +597,7 @@
 \item[\mtbox{second()}\hfill\rrbox{B}] This method, as the name implies, returns the second entry of the ordered pair, as a \rbox{B} object. It is important to observe that, from the MVEL context, as the method constitutes a property accessor (namely, a getter), the parentheses can be safely omitted.
 \end{description}
 
-Keep in mind that the entries in the \rbox{Pair} class, once defined, cannot be modified to other values. The initial values are set during instantiation and, therefore, only entry getters are available to the user during the object life cycle. 
+Keep in mind that the entries in the \rbox{Pair} class, once defined, cannot be modified to other values. The initial values are set during instantiation and, therefore, only entry getters are available to the user during the object life cycle.
 \end{messagebox}
 
 \begin{messagebox}{Status for class loading and instantiation}{araracolour}{\icok}{white}
@@ -618,7 +618,7 @@
 
 \vspace{1.4em}
 
-Please make sure to \emph{always} check the returned integer status when using class loading and instantiation methods in directive and rule contexts. This feature is quite powerful yet tricky and subtle! 
+Please make sure to \emph{always} check the returned integer status when using class loading and instantiation methods in directive and rule contexts. This feature is quite powerful yet tricky and subtle!
 \end{messagebox}
 
 \begin{description}
@@ -807,7 +807,7 @@
 
 \vspace{0.4em}
 
-From the previous example, it is important to observe that a potential file name quoting is not necessary. The underlying system command execution library handles the provided arguments accordingly. 
+From the previous example, it is important to observe that a potential file name quoting is not necessary. The underlying system command execution library handles the provided arguments accordingly.
 
 Behind the scenes, however, \arara\ employs a different workflow when constructing a \rbox{Command} object. The tool sets the working directory path for the current command to \abox[araracolour]{USER\_DIR} which is based on the current execution. The working directory path can be explicitly set through specific method calls, described later on in this section.
 
@@ -870,7 +870,7 @@
 \end{codebox}
 \end{description}
 
-The methods presented in this section constitute the foundations of underlying system command execution. In particular, whenever possible, it is highly advisable to use \rbox{Command} objects through proper \mtbox{getCommand} method calls, as the plain string approach used in previous versions of our tool is marked as deprecated and will be removed in future versions. 
+The methods presented in this section constitute the foundations of underlying system command execution. In particular, whenever possible, it is highly advisable to use \rbox{Command} objects through proper \mtbox{getCommand} method calls, as the plain string approach used in previous versions of our tool is marked as deprecated and will be removed in future versions.
 
 \section{Others}
 \label{sec:others}
@@ -955,7 +955,7 @@
 path = getSession().get('environment:PATH');
 \end{codebox}
 
-The \verb|arara| namespace is a bit different. It provides flags that control \arara s behaviour. Flags are used in rules and may be manipulated by the user. Be aware, that every change in this namespace will result in \arara\ acting like you know what you did. Use this power with care. Currently, there is only one relevant flag: \verb|arara:FILENAME:halt|. This will stop the currently run command execution on the file with the specified file name. The value of this map entry is the exit status you want \arara\ to have. 
+The \verb|arara| namespace is a bit different. It provides flags that control \arara s behaviour. Flags are used in rules and may be manipulated by the user. Be aware, that every change in this namespace will result in \arara\ acting like you know what you did. Use this power with care. Currently, there is only one relevant flag: \verb|arara:FILENAME:halt|. This will stop the currently run command execution on the file with the specified file name. The value of this map entry is the exit status you want \arara\ to have.
 
 \begin{codebox}{Example}{teal}{\icnote}{white}
 path = getSession().put('arara:myfile.tex:halt', 42);

Modified: trunk/Master/texmf-dist/doc/support/arara/chapters/mvel.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/arara/chapters/mvel.tex	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/doc/support/arara/chapters/mvel.tex	2020-04-10 22:00:34 UTC (rev 54640)
@@ -74,7 +74,7 @@
 [ "Jim", "Bob", "Smith" ]
 \end{codebox}
 
-Note that lists are denoted by comma-separated values delimited by square brackets. Similarly, maps (sets of key/value attributes) are expressed in the following format: 
+Note that lists are denoted by comma-separated values delimited by square brackets. Similarly, maps (sets of key/value attributes) are expressed in the following format:
 
 \begin{codebox}{Creating a map}{teal}{\icnote}{white}
 [ "Foo" : "Bar", "Bar" : "Foo" ]
@@ -129,10 +129,10 @@
 if (var > 0) {
    r = "greater than zero";
 }
-else if (var == 0) { 
+else if (var == 0) {
    r = "exactly zero";
 }
-else { 
+else {
    r = "less than zero";
 }
 \end{codebox}
@@ -151,10 +151,10 @@
 }
 \end{codebox}
 
-As expected, MVEL also implements the standard C \rbox{for} loop. Observe that newer versions of MVEL allow an abbreviation of \rbox{foreach} to the usual \rbox{for} statement, as syntactic sugar. In order to explicitly indicate a collection iteration, we usually use \rbox{foreach} in the default rules for \arara, but both statements behave exactly the same from a semantic point of view. 
+As expected, MVEL also implements the standard C \rbox{for} loop. Observe that newer versions of MVEL allow an abbreviation of \rbox{foreach} to the usual \rbox{for} statement, as syntactic sugar. In order to explicitly indicate a collection iteration, we usually use \rbox{foreach} in the default rules for \arara, but both statements behave exactly the same from a semantic point of view.
 
 \begin{codebox}{Iteration statement}{teal}{\icnote}{white}
-for (int i = 0; i < 100; i++) { 
+for (int i = 0; i < 100; i++) {
    System.out.println(i);
 }
 \end{codebox}

Modified: trunk/Master/texmf-dist/doc/support/arara/chapters/rules.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/arara/chapters/rules.tex	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/doc/support/arara/chapters/rules.tex	2020-04-10 22:00:34 UTC (rev 54640)
@@ -44,7 +44,7 @@
 \begin{description}
 \item[\povalue{\hphantom{x}bw\hphantom{x}}] This option value, as the name suggests, converts all colors to a black and white model.
 
-\item[\povalue{cmyk}] This option value converts the RGB (red, green an blue) color model to the CMYK (cyan, magenta, yellow and black) counterpart. 
+\item[\povalue{cmyk}] This option value converts the RGB (red, green an blue) color model to the CMYK (cyan, magenta, yellow and black) counterpart.
 
 \item[\povalue{rgb}] This option value converts the CMYK (cyan, magenta, yellow and black)  color model to the RGB (red, green an blue) counterpart.
 
@@ -71,7 +71,7 @@
 \item[\povalue{context}] This value, as the name indicates, sets the underlying \TeX\ engine to \rbox{context} for the current compilation. Note that the engine might play a major role in the generated code.
 
 \item[\povalue{none}] This value, as the name suggests, sets the underlying \TeX\ engine to \rbox{none} for the current compilation. In this case, there will be no associated engine.
-\end{description} 
+\end{description}
 
 \item[\abox{format}] This option, as the name suggests, converts each output file to a specified format. Make sure to take a look at the Asymptote manual for further details.
 
@@ -134,7 +134,7 @@
 This rule runs \rbox{biber}, the backend bibliography processor for \rbox{biblatex}, on the corresponding base name of the \mtbox{currentFile} reference (i.e, the name without the associated extension) as a string.
 
 \begin{description}
-\item[\rpsbox{tool}]  This option sets whether the bibliography processor should be executed in \emph{tool mode}, intended for transformations and modifications of datasources. Since this mode is oriented towards a datasource rather than a document, make sure to use it alongside the \abox{options} option. 
+\item[\rpsbox{tool}]  This option sets whether the bibliography processor should be executed in \emph{tool mode}, intended for transformations and modifications of datasources. Since this mode is oriented towards a datasource rather than a document, make sure to use it alongside the \abox{options} option.
 
 \item[\abox{options}] This option, as the name indicates, takes a list of raw command line options and appends it to the actual system call. An error is thrown if any data structure other than a proper list is provided as the value.
 \end{description}
@@ -192,6 +192,77 @@
 % arara: clean: { extensions: [ aux, log ] }
 \end{codebox}
 
+\item[\rulebox{context}]
+This rule runs the \rbox{context} \TeX\ engine on the provided \mtbox{currentFile} reference, generating a corresponding file in the Portable Document File format. Please refer to the user manual for further details.
+
+\begin{description}
+\item[\rpsbox{make}] This option, as the name indicates, sets whether the engine should create context formats. Please refer to the user manual for further details on this option.
+
+\item[\abox{ctx}] This option, as the name indicates, sets the \rbox{ctx} file for process management specification. Please refer to the user manual for further details on this option.
+
+\item[\abox{interface}] This option, as the name indicates, sets the specified user interface. Please refer to the user manual for further details on this option.
+
+\item[\rpsbox{autopdf}] This option, as the name indicates, closes the corresponding \rbox{pdf} file in viewer and then reopens it afterwards.
+
+\item[\abox{purge}] This option, as the name indicates, purges files according to the provided rule. Possible values are: 
+
+\begin{description}
+\item[\povalue{partial}] This value, as the name suggests, purges files either or not after a proper run, defined through a pattern. Please refer to the user manual for further details.
+
+\item[\povalue{all}] This value, as the name suggests, purges all files either or not after a proper run, defined through a pattern. Please refer to the user manual for further details.
+
+\item[\povalue{result}] This value, as the name suggests, purges the resulting file before the actual run. Please refer to the user manual for further details.
+\end{description}
+
+\item[\abox{modules}] This option, as the name indicates, sets a list of modules and styles to be loaded, normally part of the distribution.
+
+\item[\abox{environments}] This option, as the name indicates, sets a list of environment files (document styles) to load first.
+
+\item[\abox{mode}] This option, as the name indicates, enables modes according to the provided list (conditional processing in styles).
+
+\item[\abox{path}] This option, as the name indicates, consults the given paths in the provided list during a file lookup.
+
+\item[\abox{arguments}] This option, as the name indicates, sets variables that can be consulted during a run. Such variables are defined as key/value pairs.
+
+\item[\abox{trackers}]  This option, as the name indicates, sets the list of tracker variables. Please refer to the user manual for further details.
+
+\item[\abox{directives}]  This option, as the name indicates, sets the list of directive variables. Please refer to the user manual for further details.
+
+\item[\abox{silent}] This option, as the name indicates, disables the log categories based on the provided list. Please refer to the user manual for further details.
+
+\item[\abox{errors}]  This option, as the name indicates, shows errors at the end of a run and quits when it the provided list. Please refer to the user manual for further details.
+
+\item[\rpsbox{synctex}] This option sets whether \rbox{synctex}, an input and output synchronization feature that allows navigation from source to typeset material and vice versa, available in most \TeX\ engines, is activated.
+
+\item[\abox{interaction}] This option alters the underlying engine behaviour. If this option is omitted, the engine will prompt the user for interaction in the event of an error. Possible values are, in order of increasing user interaction (courtesy of our master Enrico Gregorio):
+
+\begin{description}
+\item[\povalue{batchmode}] In this mode, nothing is printed on the terminal, and errors are scrolled as if the \rbox{return} key is hit at every error. Missing files that \TeX\ tries to input or request from keyboard input cause the job to abort.
+
+\item[\povalue{nonstopmode}] In this mode, the diagnostic message will appear on the terminal, but there is no possibility of user interaction just like in batch mode, previously described.
+\end{description}
+
+\item[\abox{options}] This option, as the name indicates, takes a list of raw command line options and appends it to the actual system call. An error is thrown if any data structure other than a proper list is provided as the value.
+\end{description}
+
+\begin{codebox}{Example}{teal}{\icnote}{white}
+% arara: context
+\end{codebox}
+
+\item[\rulebox{convert}]
+This rule runs the \rbox{convert} program, a member of the ImageMagick suite of tools. This program is used to convert between image formats as well  as  resize  an  image, blur, crop, despeckle, dither, draw on, flip, join, resample, and more.
+
+\begin{description}
+\item[\rpbox{program}{convert}] This option specifies the command utility path as a means to avoid potential clashes with underlying operating system commands.
+
+\item[\abox{options}~\rqbox] This option, as the name indicates, takes a list of raw command line options and appends it to the actual script call. An error is thrown if any data structure other than a proper list is provided as the value.
+\end{description}
+
+\begin{codebox}{Example}{teal}{\icnote}{white}
+% arara: convert: { options: [ 'photo1.jpg', '--resize',
+% arara: --> '50%', 'photo2.jpg' ] }
+\end{codebox}
+
 \item[\rulebox{csplain}]
 This rule runs the \rbox{csplain} \TeX\ engine, a conservative extension of Knuth's plain \TeX\ with direct processing characters and hyphenation patterns for Czech and Slovak, on the provided \mtbox{currentFile} reference.
 
@@ -299,6 +370,37 @@
 % arara: --> csv: booklist.csv }
 \end{codebox}
 
+\item[\rulebox{detex}]
+This rule runs \rbox{detex}, a command line application that, as the name indicates, reads the provided \mtbox{currentFile} reference, removes all comments and \TeX\ control sequences and writes the remainder to the standard output or file.
+
+\begin{description}
+\item[\rpsbox{references}] This option defines whether the tool should echo values from page counters, references and citations.
+
+\item[\rpsbox{follow}] This option defines whether the tool should follow files referenced through typical input mechanisms.
+
+\item[\rpsbox{math}] This option defines whether the tool should replace math with nouns and verbs in order to preserve grammar.
+
+\item[\rpsbox{spaces}] This option, as the name indicates, define whether the tool should replace control sequences with spaces.
+
+\item[\rpsbox{words}] This option, as the name indicates, define whether the tool should output only a list of words.
+
+\item[\abox{environments}] This option takes a list of environments to be ignored by the tool during the text transformation.
+
+\item[\abox{mode}] This option, as the name indicates, defines the operation mode for the tool. Possible values are:
+
+\begin{description}
+\item[\povalue{latex}] This value, as the name suggests, enables and forces the \LaTeX\ mode for the tool.
+
+\item[\povalue{tex}] This value, as the name suggests, enables and forces the plain \TeX\ mode for the tool.
+\end{description}
+
+\item[\abox{output}] This value, as the name indicates, sets the output file in which the contents will be redirected.
+\end{description}
+
+\begin{codebox}{Example}{teal}{\icnote}{white}
+% arara: detex: { output: thesis.txt }
+\end{codebox}
+
 \item[\rulebox{dvipdfm}]
 This rule runs \rbox{dvipdfm}, a command line utility for file format translation, on the corresponding base name of the \mtbox{currentFile} reference (i.e, the name without the associated extension) as a string concatenated with the \rbox{dvi} suffix, generating a Portable Document Format \rbox{pdf} file.
 
@@ -386,9 +488,54 @@
 \end{description}
 
 \begin{codebox}{Example}{teal}{\icnote}{white}
-% arara: etex: { shell: yes }
+% arara: etex: {
+% arara: --> shell: yes,
+% arara: --> interaction: batchmode
+% arara: --> }
 \end{codebox}
 
+\item[\rulebox{fig2dev}]
+This rule runs \rbox{fig2dev}, a command line application that translates \rbox{fig} code in the corresponding base name of the \mtbox{currentFile} reference (i.e, the name without the associated extension) as a string concatenated with the \rbox{fig} suffix into the specified graphics language and puts them in the specified output file.
+
+\begin{description}
+\item[\abox{language}~\rqbox] This option, as the name indicates, sets the output graphics language for proper transformation. Possible values are listed in the following table (you can infer their types as well, based on the values):
+
+\bigskip
+
+{\centering
+\def\arraystretch{1.5}
+\begin{tabularx}{0.8\textwidth}{YYYYYY}
+\povalue{box} & \povalue{cgm} & \povalue{epic} &
+\povalue{eepic} & \povalue{eepicemu} & \povalue{emf}\\
+\povalue{eps} & \povalue{gif} & \povalue{ibmgl} &
+\povalue{jpeg} & \povalue{latex} & \povalue{map}\\
+\povalue{mf} & \povalue{mp} & \povalue{mmp} &
+\povalue{pcx} & \povalue{pdf} & \povalue{pdftex}\\
+\povalue{pdftex\_t} & \povalue{pic} & \povalue{pictex} &
+\povalue{png} & \povalue{ppm} & \povalue{ps}\\
+\povalue{pstex} & \povalue{pstex\_t} & \povalue{ptk} &
+\povalue{shape} & \povalue{sld} & \povalue{svg}\\
+\povalue{textyl} & \povalue{tiff} & \povalue{tk} &
+\povalue{tpic} & \povalue{xbm} & \povalue{xpm}
+\end{tabularx}\par}
+
+\bigskip
+
+\item[\abox{output}~\rqbox] This option, as the name indicates, sets the output file which will contain the translated code based on the provided file and language.
+
+\item[\abox{magnification}] This option, as the name suggests, sets the magnification level at which the figure is rendered.
+
+\item[\abox{font}] This option sets the default font used for text objects to the provided value. Keep in mind that the format of this option depends on the graphics language in use.
+
+\item[\abox{size}] This option, as the name suggests, set the default font size (in points) for text objects to the provided value.
+
+\item[\abox{options}] This option, as the name indicates, takes a list of raw command line options and appends it to the actual system call. An error is thrown if any data structure other than a proper list is provided as the value.
+\end{description}
+
+\begin{codebox}{Example}{teal}{\icnote}{white}
+% arara: fig2dev: { language: mp, output: drawing.mp }
+\end{codebox}
+
 \item[\rulebox{frontespizio}]
 This rule automates the steps required by the \rbox{frontespizio} package in order to help Italian users generate the frontispiece to their thesis. First and foremost, the frontispiece is generated. If \rbox{latex} is used as the underlying engine, there is an additional intermediate conversion step to a proper \rbox{eps} file. Finally, the final document is compiled.
 
@@ -440,7 +587,7 @@
 \begin{description}
 \item[\rpsbox{silent}] This option, as the name indicates, sets whether the script will operate in silent mode, in which no output is given to the terminal.
 
-\item[\rpsbox{overwrite}] This option, as the name indicates, sets whether the \mtbox{currentFile} reference will be overwritten. If activated, a copy will be made before the actual indentation process. 
+\item[\rpsbox{overwrite}] This option, as the name indicates, sets whether the \mtbox{currentFile} reference will be overwritten. If activated, a copy will be made before the actual indentation process.
 
 \item[\abox{trace}] This option, as the name indicates, enables the script tracing mode, such that a verbose output will be given to the \rbox{indent.log} log file. Possible values are:
 
@@ -720,7 +867,7 @@
 \item[\abox{order}] This option, as the name indicates, sets the default ordering scheme for the \rbox{makeindex} program. Two possible values are available:
 
 \begin{description}
-\item[\povalue{letter}] This value, as the name indicates, activates the letter ordering scheme. In such scheme, a blank space does not precede any letter in the alphabet. 
+\item[\povalue{letter}] This value, as the name indicates, activates the letter ordering scheme. In such scheme, a blank space does not precede any letter in the alphabet.
 
 \item[\povalue{word}] This value, as the name indicates, activates the word ordering scheme. In such scheme, a blank space precedes any letter in the alphabet.
 \end{description}
@@ -951,6 +1098,18 @@
 % arara: ps2pdf: { output: article }
 \end{codebox}
 
+\item[\rulebox{qpdf}]
+This rule runs \rbox{qpdf}, a command line application that does structural, content-preserving transformations of Portable Document Files, as well as providing capabilities to developers.
+
+\begin{description}
+\item[\abox{options}~\rqbox] This option, as the name indicates, takes a list of raw command line options and appends it to the actual script call. An error is thrown if any data structure other than a proper list is provided as the value.
+\end{description}
+
+\begin{codebox}{Example}{teal}{\icnote}{white}
+% arara: qpdf: { options: [ '--linearize', 'input.pdf',
+% arara: --> 'output.pdf' ] }
+\end{codebox}
+
 \item[\rulebox{sketch}]
 This rule runs \rbox{sketch}, a system for producing line drawings of solid objects and scenes, on the corresponding base name of the \mtbox{currentFile} reference (i.e, the name without the associated extension) as a string concatenated with the \rbox{sk} suffix. Note that one needs to add support for this particular file type, as seen in Section~\ref{sec:basicstructure}, on page~\pageref{sec:basicstructure}.
 
@@ -1002,6 +1161,49 @@
 % arara: tex: { shell: yes }
 \end{codebox}
 
+\item[\rulebox{texcount}]
+This rule runs \rbox{texcount}, a Perl script designed to count words in \TeX\ and \LaTeX\ files, ignoring macros, tables, formulae and more on the provided \mtbox{currentFile} reference. The script is highly configurable, so make sure to check the manual for further information. 
+
+\begin{description}
+\item[\abox{rules}] This option, as the name suggests, sets the rules which dictate how the script should work regarding word counting and option handling. Possible values are:
+
+\begin{description}
+\item[\povalue{relaxed}] This value, as the name indicates, sets a relaxed set of rules, allowing more general cases to be counted as either words and macros.
+
+\item[\povalue{restricted}] This value, as the name indicates, sets a more restricted set of rules for word counting and option handling.
+\end{description}
+
+\item[\abox{verbosity}] This option, as the name suggests, sets the verbosity level of the script according to the provided integer value. Possible values are:
+
+\begin{description}
+\item[\povalue{\hphantom{x}0\hphantom{x}}] This value sets the lowest verbosity level of all, such that the script does not present parsing details.
+
+\item[\povalue{\hphantom{x}1\hphantom{x}}] This value raises the details a bit and sets the verbosity level to include parsed words and marked formulae.
+
+\item[\povalue{\hphantom{x}2\hphantom{x}}] This value adds more details from the previous verbosity level by including ignored text as well.
+
+\item[\povalue{\hphantom{x}3\hphantom{x}}] This value adds more details from the previous verbosity level by including comments and options.
+
+\item[\povalue{\hphantom{x}4\hphantom{x}}] This value sets the highest verbosity level of all, such that the script includes parsed worded, marked formulae, ignored text, comments, options and internal states.
+\end{description}
+
+\item[\rpsbox{strict}] This option sets whether the tool should enable strict mode, so certain groups for which rules are not defined raise warnings.
+
+\item[\rpsbox{html}] This option, as the name suggests, defines whether the tool should output the report in the HTML format.
+
+\item[\rpsbox{total}] This option, as the name suggests, defines whether the tool should provide a total sum instead of partial sums (per file).
+
+\item[\rpsbox{unicode}] This option, as the name indicates, defines whether the tool should select Unicode as encoding for both input and output.
+
+\item[\abox{output}] This option, as the name suggests, sets the output file name in which the report will be written.
+
+\item[\abox{options}] This option, as the name indicates, takes a list of raw command line options and appends it to the actual system call. An error is thrown if any data structure other than a proper list is provided as the value.
+\end{description}
+
+\begin{codebox}{Example}{teal}{\icnote}{white}
+% arara: texcount: { output: report.txt }
+\end{codebox}
+
 \item[\rulebox{texindy}]
 This rule runs \rbox{texindy}, a variant of the \rbox{xindy} indexing system focused on \LaTeX\ documents, on the corresponding base name of the \mtbox{currentFile} reference (i.e, the name without the associated extension) as a string concatenated with the \rbox{idx} suffix, generating an index as a special \rbox{ind} file.
 

Modified: trunk/Master/texmf-dist/doc/support/arara/chapters/yaml.tex
===================================================================
--- trunk/Master/texmf-dist/doc/support/arara/chapters/yaml.tex	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/doc/support/arara/chapters/yaml.tex	2020-04-10 22:00:34 UTC (rev 54640)
@@ -68,8 +68,8 @@
 \begin{codebox}{Scalar content in literal and folded styles}{teal}{\icnote}{white}
 logo: |
   This is the arara logo
-  in its ASCII glory! 
-    __ _ _ __ __ _ _ __ __ _ 
+  in its ASCII glory!
+    __ _ _ __ __ _ _ __ __ _
    / _` | '__/ _` | '__/ _` |
   | (_| | | | (_| | | | (_| |
    \__,_|_|  \__,_|_|  \__,_|

Modified: trunk/Master/texmf-dist/scripts/arara/arara.jar
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/scripts/arara/rules/animate.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/animate.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/animate.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.
@@ -16,13 +16,7 @@
         prefix = [];
         input = getBasename(reference).concat('.pdf');
         output = getBasename(reference).concat('.gif');
-        if (isUnix()) {
-            prefix = [ program ];
-        }
-        else {
-            prefix = [ 'cmd', '/c', program ];
-        }
-        return getCommand(prefix, '-delay', delay, '-loop',
+        return getCommand(program, '-delay', delay, '-loop',
                loop, '-density', density, options, input, output);
     }
 arguments:

Modified: trunk/Master/texmf-dist/scripts/arara/rules/asymptote.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/asymptote.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/asymptote.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/bib2gls.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/bib2gls.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/bib2gls.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.
@@ -60,8 +60,8 @@
        else
        {
           return getCommand('bib2gls', dir, trans, group, interpret,
-                 breakspace, trimfields, recordcount, recordcountunit, 
-                 cite, verbose, merge, locale, uniscript, packages, 
+                 breakspace, trimfields, recordcount, recordcountunit,
+                 cite, verbose, merge, locale, uniscript, packages,
                  ignore, custom, mapformats, options, getBasename(reference));
        }
     }

Modified: trunk/Master/texmf-dist/scripts/arara/rules/biber.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/biber.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/biber.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/bibtex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/bibtex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/bibtex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/bibtex8.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/bibtex8.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/bibtex8.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/bibtexu.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/bibtexu.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/bibtexu.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/clean.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/clean.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/clean.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Added: trunk/Master/texmf-dist/scripts/arara/rules/context.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/context.yaml	                        (rev 0)
+++ trunk/Master/texmf-dist/scripts/arara/rules/context.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -0,0 +1,171 @@
+!config
+# Arara, the cool TeX automation tool
+# Copyright (c) 2020, Island of TeX
+# All rights reserved.
+#
+# This rule is part of arara.
+identifier: context
+name: ConTeXt
+authors:
+- Island of TeX
+commands:
+- name: ConTeXt engine
+  command: >
+    @{
+        return getCommand('context', make, ctx, interface, autopdf, purge,
+                          modules, environments, mode, path, arguments,
+                          trackers, directives, silent, errors, interaction,
+                          synctex, options, reference);
+    }
+arguments:
+- identifier: make
+  flag: >
+    @{
+        return isTrue(parameters.make, '--make');
+    }
+- identifier: ctx
+  flag: >
+    @{
+        return '--ctx='.concat(parameters.ctx);
+    }
+- identifier: interface
+  flag: >
+    @{
+        return [ '--interface', parameters.interface ];
+    }
+- identifier: autopdf
+  flag: >
+    @{
+        return isTrue(parameters.autopdf, '--autopdf');
+    }
+- identifier: purge
+  flag: >
+    @{
+        p = [ 'partial' : '--purge', 'all' : '--purgeall',
+              'result' : '--purgeresult' ];
+        if (p.keySet().contains(parameters.purge)) {
+            return p.get(parameters.purge);
+        }
+        else {
+            throwError('Invalid value, expected either partial or all.');
+        }
+    }
+- identifier: modules
+  flag: >
+    @{
+        if (isList(parameters.modules)) {
+            return '--usemodule='.concat(String.join(',', parameters.modules));
+        }
+        else {
+            throwError('I was expecting a list.');
+        }
+    }
+- identifier: environments
+  flag: >
+    @{
+        if (isList(parameters.environments)) {
+            return '--environment='.concat(String.join(',',
+                   parameters.environments));
+        }
+        else {
+            throwError('I was expecting a list.');
+        }
+    }
+- identifier: mode
+  flag: >
+    @{
+        if (isList(parameters.mode)) {
+            return '--mode='.concat(String.join(',', parameters.mode));
+        }
+        else {
+            throwError('I was expecting a list.');
+        }
+    }
+- identifier: path
+  flag: >
+    @{
+        if (isList(parameters.path)) {
+            return '--path='.concat(String.join(',', parameters.path));
+        }
+        else {
+            throwError('I was expecting a list.');
+        }
+    }
+- identifier: arguments
+  flag: >
+    @{
+        if (isList(parameters.arguments)) {
+            return '--arguments='.concat(String.join(',',
+                   parameters.arguments));
+        }
+        else {
+            throwError('I was expecting a list.');
+        }
+    }
+- identifier: trackers
+  flag: >
+    @{
+        if (isList(parameters.trackers)) {
+            return '--trackers='.concat(String.join(',', parameters.trackers));
+        }
+        else {
+            throwError('I was expecting a list.');
+        }
+    }
+- identifier: directives
+  flag: >
+    @{
+        if (isList(parameters.directives)) {
+            return '--directives='.concat(String.join(',',
+                   parameters.directives));
+        }
+        else {
+            throwError('I was expecting a list.');
+        }
+    }
+- identifier: silent
+  flag: >
+    @{
+        if (isList(parameters.modules)) {
+            return '--silent='.concat(String.join(',', parameters.silent));
+        }
+        else {
+            throwError('I was expecting a list.');
+        }
+    }
+- identifier: errors
+  flag: >
+    @{
+        if (isList(parameters.errors)) {
+            return '--errors='.concat(String.join(',', parameters.errors));
+        }
+        else {
+            throwError('I was expecting a list.');
+        }
+    }
+- identifier: interaction
+  flag: >
+    @{
+        if ([ 'batchmode', 'nonstopmode' ].contains(parameters.interaction)) {
+            return '--'.concat(parameters.interaction);
+        }
+        else {
+            throwError('The provided interaction value is not valid.');
+        }
+    }
+- identifier: synctex
+  flag: >
+    @{
+        return isTrue(parameters.synctex, '--synctex', '--nosynctex');
+    }
+- identifier: options
+  flag: >
+    @{
+        if (isList(parameters.options)) {
+            return parameters.options;
+        }
+        else {
+            throwError('I was expecting a list of options.');
+        }
+    }
+

Added: trunk/Master/texmf-dist/scripts/arara/rules/convert.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/convert.yaml	                        (rev 0)
+++ trunk/Master/texmf-dist/scripts/arara/rules/convert.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -0,0 +1,34 @@
+!config
+# Arara, the cool TeX automation tool
+# Copyright (c) 2020, Island of TeX
+# All rights reserved.
+#
+# This rule is part of arara.
+identifier: convert
+name: Convert
+authors:
+- Island of TeX
+commands:
+- name: The Convert program
+  command: >
+    @{
+        return getCommand(program, options);
+    }
+arguments:
+- identifier: program
+  flag: >
+    @{
+        parameters.program
+    }
+  default: convert
+- identifier: options
+  flag: >
+    @{
+        if (isList(parameters.options)) {
+            return parameters.options;
+        }
+        else {
+            throwError('I was expecting a list of options.');
+        }
+    }
+  required: true

Modified: trunk/Master/texmf-dist/scripts/arara/rules/csplain.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/csplain.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/csplain.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/datatooltk.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/datatooltk.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/datatooltk.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.
@@ -12,7 +12,7 @@
 - name: The DatatoolTk software
   command: >
     @{
-        return getCommand('datatooltk', options, output, csv, sql, input, 
+        return getCommand('datatooltk', options, output, csv, sql, input,
                sqldb, sqluser, name, probsoln, sort, sortlocale, sortcase,
                seed, shuffle, sep, delim, csvheader, noconsole, debug,
                owneronly, maptex, xls, ods, sheet, filterop, filters,

Added: trunk/Master/texmf-dist/scripts/arara/rules/detex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/detex.yaml	                        (rev 0)
+++ trunk/Master/texmf-dist/scripts/arara/rules/detex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -0,0 +1,82 @@
+!config
+# Arara, the cool TeX automation tool
+# Copyright (c) 2020, Island of TeX 
+# All rights reserved.
+#
+# This rule is part of arara.
+identifier: detex
+name: DeTeX
+authors:
+- Island of TeX
+commands:
+- name: The DeTeX program
+  command: >
+    @{
+        c = getCommand('detex', references, mode, follow, math, spaces,
+                       words, environments, reference);
+        if (isEmpty(output)) {
+          return c;
+        }
+        else {
+            p = unsafelyExecuteSystemCommand(c);
+            if (p.first == 0) {
+                return writeToFile(toFile(output), p.second, false);
+            }
+            else {
+                return false;
+            }
+        }
+    }
+arguments:
+- identifier: references
+  flag: >
+    @{
+        return isTrue(parameters.references, '-c');
+    }
+- identifier: mode
+  flag: >
+    @{
+        modes = [ 'latex' : '-l', 'tex' : '-t' ];
+        if (modes.keySet().contains(parameters.mode)) {
+            return modes.get(parameters.mode);
+        }
+        else {
+            throwError('I was expecting either the TeX or LaTeX mode.');
+        }
+    }
+- identifier: follow
+  flag: >
+    @{
+        return isFalse(parameters.follow, '-n');
+    }
+- identifier: math
+  flag: >
+    @{
+        return isFalse(parameters.math, '-r');
+    }
+- identifier: spaces
+  flag: >
+    @{
+        return isTrue(parameters.spaces, '-s');
+    }
+- identifier: words
+  flag: >
+    @{
+        return isTrue(parameters.words, '-w');
+    }
+- identifier: environments
+  flag: >
+    @{
+        if (!isList(parameters.environments)) {
+            throwError('I was expecting a list of environments.');
+        }
+        else {
+            return [ '-e', String.join(',', parameters.environments) ];
+        }
+    }
+- identifier: output
+  flag: >
+    @{
+        return parameters.output;
+    }
+

Modified: trunk/Master/texmf-dist/scripts/arara/rules/dvipdfm.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/dvipdfm.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/dvipdfm.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/dvipdfmx.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/dvipdfmx.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/dvipdfmx.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/dvips.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/dvips.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/dvips.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/dvipspdf.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/dvipspdf.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/dvipspdf.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/dvisvgm.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/dvisvgm.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/dvisvgm.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/etex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/etex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/etex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Added: trunk/Master/texmf-dist/scripts/arara/rules/fig2dev.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/fig2dev.yaml	                        (rev 0)
+++ trunk/Master/texmf-dist/scripts/arara/rules/fig2dev.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -0,0 +1,66 @@
+!config
+# Arara, the cool TeX automation tool
+# Copyright (c) 2020, Island of TeX
+# All rights reserved.
+#
+# This rule is part of arara.
+identifier: fig2dev
+name: fig2dev
+authors:
+- Island of TeX
+commands:
+- name: The fig2dev program
+  command: >
+    @{
+        input = getBasename(reference).concat('.fig');
+        return getCommand('fig2dev', language, magnification, font, size,
+                          options, input, output);
+    }
+arguments:
+- identifier: language
+  flag: >
+    @{
+        if ([ 'box', 'cgm', 'epic', 'eepic', 'eepicemu', 'emf', 'eps', 'gif',
+              'ibmgl', 'jpeg', 'latex', 'map', 'mf', 'mp', 'mmp', 'pcx',
+              'pdf', 'pdftex', 'pdftex_t', 'pic', 'pictex', 'png', 'ppm',
+              'ps', 'pstex', 'pstex_t', 'ptk', 'shape', 'sld', 'svg',
+              'textyl', 'tiff', 'tk', 'tpic', 'xbm',
+              'xpm' ].contains(parameters.language)) {
+            return [ '-L', parameters.language ];
+        }
+        else {
+            throwError('Invalid language, please refer to the manual.');
+        }
+    }
+  required: true
+- identifier: output
+  flag: >
+    @{
+        return parameters.output;
+    }
+  required: true
+- identifier: magnification
+  flag: >
+    @{
+        return [ '-m', parameters.magnification ];
+    }
+- identifier: font
+  flag: >
+    @{
+        return [ '-f', parameters.font ];
+    }
+- identifier: size
+  flag: >
+    @{
+        return [ '-s', parameters.size ];
+    }
+- identifier: options
+  flag: >
+    @{
+        if (isList(parameters.options)) {
+            return parameters.options;
+        }
+        else {
+            throwError('I was expecting a list of options.')
+        }
+    }

Modified: trunk/Master/texmf-dist/scripts/arara/rules/frontespizio.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/frontespizio.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/frontespizio.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/halt.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/halt.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/halt.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/indent.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/indent.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/indent.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/knitr.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/knitr.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/knitr.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/latex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/latex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/latex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/latexmk.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/latexmk.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/latexmk.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/luahbtex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/luahbtex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/luahbtex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/lualatex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/lualatex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/lualatex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/luatex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/luatex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/luatex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/make.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/make.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/make.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/makeglossaries.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/makeglossaries.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/makeglossaries.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.
@@ -32,11 +32,11 @@
 
            lines = readFromFile(base.concat('.').concat('aux'));
 
-           java.util.regex.Pattern glsPattern = 
+           java.util.regex.Pattern glsPattern =
                 java.util.regex.Pattern.compile(
                  "\\\\@newglossary\\{.*\\}\\{(.*)\\}\\{(.*)\\}\\{(.*)\\}");
 
-           java.util.regex.Pattern istPattern = 
+           java.util.regex.Pattern istPattern =
              (clean == 'partial' ? null :
               java.util.regex.Pattern.compile("\\\\@istfilename\\{(.*)\\}"));
 

Modified: trunk/Master/texmf-dist/scripts/arara/rules/makeglossarieslite.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/makeglossarieslite.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/makeglossarieslite.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/makeindex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/makeindex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/makeindex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/metapost.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/metapost.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/metapost.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/nomencl.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/nomencl.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/nomencl.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/pbibtex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/pbibtex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/pbibtex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/pdfcsplain.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/pdfcsplain.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/pdfcsplain.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/pdflatex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/pdflatex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/pdflatex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/pdftex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/pdftex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/pdftex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/pdftk.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/pdftk.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/pdftk.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/platex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/platex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/platex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/ps2pdf.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/ps2pdf.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/ps2pdf.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/ptex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/ptex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/ptex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Added: trunk/Master/texmf-dist/scripts/arara/rules/qpdf.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/qpdf.yaml	                        (rev 0)
+++ trunk/Master/texmf-dist/scripts/arara/rules/qpdf.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -0,0 +1,28 @@
+!config
+# Arara, the cool TeX automation tool
+# Copyright (c) 2020, Island of TeX
+# All rights reserved.
+#
+# This rule is part of arara.
+identifier: qpdf
+name: QPDF
+authors:
+- Island of TeX
+commands:
+- name: The QPDF program
+  command: >
+    @{
+        return getCommand('qpdf', options);
+    }
+arguments:
+- identifier: options
+  flag: >
+    @{
+        if (isList(parameters.options)) {
+            return parameters.options;
+        }
+        else {
+            throwError('I was expecting a list of options.');
+        }
+    }
+  required: true

Modified: trunk/Master/texmf-dist/scripts/arara/rules/sketch.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/sketch.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/sketch.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/songidx.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/songidx.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/songidx.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/tex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/tex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/tex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Added: trunk/Master/texmf-dist/scripts/arara/rules/texcount.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/texcount.yaml	                        (rev 0)
+++ trunk/Master/texmf-dist/scripts/arara/rules/texcount.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -0,0 +1,74 @@
+!config
+# Arara, the cool TeX automation tool
+# Copyright (c) 2020, Island of TeX
+# All rights reserved.
+#
+# This rule is part of arara.
+identifier: texcount
+name: TeXcount
+authors:
+- Island of TeX
+commands:
+- name: The TeXcount program
+  command: >
+    @{
+        return getCommand('texcount', rules, verbosity, strict, html,
+                          total, unicode, options, output, reference);
+    }
+arguments:
+- identifier: rules
+  flag: >
+    @{
+        if ([ 'relaxed', 'restricted' ].contains(parameters.rules)) {
+            return '-'.concat(parameters.rules);
+        }
+        else {
+            throwError('Invalid value, use either relaxed or restricted.');
+        }
+    }
+- identifier: verbosity
+  flag: >
+    @{
+        if ([ '0', '1', '2', '3', '4' ].contains(parameters.verbosity)) {
+            return '-v'.concat(parameters.verbosity);
+        }
+        else {
+            throwError('Invalid value, use an integer range from 0 to 4.');
+        }
+    }
+- identifier: strict
+  flag: >
+    @{
+        return isTrue(parameters.strict, '-strict');
+    }
+- identifier: html
+  flag: >
+    @{
+        return isTrue(parameters.html, '-html');
+    }
+- identifier: total
+  flag: >
+    @{
+        return isTrue(parameters.total, '-total');
+    }
+- identifier: unicode
+  flag: >
+    @{
+        return isTrue(parameters.unicode, '-unicode');
+    }
+- identifier: output
+  flag: >
+    @{
+        return '-out='.concat(parameters.output);
+    }
+- identifier: options
+  flag: >
+    @{
+        if (isList(parameters.options)) {
+            return parameters.options;
+        }
+        else {
+            throwError('I was expecting a list of options.');
+        }
+    }
+

Modified: trunk/Master/texmf-dist/scripts/arara/rules/texindy.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/texindy.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/texindy.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/tikzmake.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/tikzmake.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/tikzmake.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/upbibtex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/upbibtex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/upbibtex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/uplatex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/uplatex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/uplatex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/uptex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/uptex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/uptex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/xdvipdfmx.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/xdvipdfmx.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/xdvipdfmx.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/xelatex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/xelatex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/xelatex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/xetex.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/xetex.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/xetex.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Modified: trunk/Master/texmf-dist/scripts/arara/rules/xindy.yaml
===================================================================
--- trunk/Master/texmf-dist/scripts/arara/rules/xindy.yaml	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/scripts/arara/rules/xindy.yaml	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,6 +1,6 @@
 !config
 # Arara, the cool TeX automation tool
-# Copyright (c) 2020, Island of TeX 
+# Copyright (c) 2020, Island of TeX
 # All rights reserved.
 #
 # This rule is part of arara.

Added: trunk/Master/texmf-dist/source/support/arara/arara-5.1.0-src.zip
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/source/support/arara/arara-5.1.0-src.zip
===================================================================
--- trunk/Master/texmf-dist/source/support/arara/arara-5.1.0-src.zip	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/source/support/arara/arara-5.1.0-src.zip	2020-04-10 22:00:34 UTC (rev 54640)

Property changes on: trunk/Master/texmf-dist/source/support/arara/arara-5.1.0-src.zip
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/source/support/arara/build.gradle.kts
===================================================================
--- trunk/Master/texmf-dist/source/support/arara/build.gradle.kts	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/source/support/arara/build.gradle.kts	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,257 +0,0 @@
-// SPDX-License-Identifier: BSD-3-Clause
-
-import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
-import org.gradle.api.internal.project.ProjectInternal
-import org.gradle.api.java.archives.internal.DefaultManifest
-import org.gradle.api.tasks.testing.logging.TestExceptionFormat
-import org.gradle.api.tasks.testing.logging.TestLogEvent
-import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
-
-plugins {
-    application
-    `maven-publish`
-    kotlin("jvm")
-    id("org.jetbrains.kotlin.plugin.serialization")
-    id("com.github.johnrengelman.shadow")
-    id("org.jetbrains.dokka")
-    id("com.diffplug.gradle.spotless")
-    jacoco
-}
-
-val kotlinVersion = project.getKotlinPluginVersion()
-dependencies {
-    implementation(kotlin("stdlib", kotlinVersion))
-    implementation(kotlin("reflect", kotlinVersion))
-    implementation("com.uchuhimo:konf-core:0.22.1")
-    implementation("com.github.ajalt:clikt:2.4.0")
-    implementation("ch.qos.cal10n:cal10n-api:0.8.1")
-    implementation("ch.qos.logback:logback-classic:1.2.3")
-    implementation("ch.qos.logback:logback-core:1.2.3")
-    implementation("org.mvel:mvel2:2.4.5.Final")
-    implementation("org.slf4j:slf4j-api:1.7.30")
-    implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.10.2")
-    implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.10.+")
-    implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.14.0")
-    implementation("com.charleskorn.kaml:kaml:0.15.0")
-    implementation("org.zeroturnaround:zt-exec:1.11")
-
-    testImplementation("io.kotlintest:kotlintest-runner-junit5:3.4.2")
-}
-
-status = "development"
-val projectName = project.name.toLowerCase()
-val moduleName = group
-val mainClass = "$moduleName.Arara"
-
-java {
-    sourceCompatibility = JavaVersion.VERSION_1_8
-    targetCompatibility = sourceCompatibility
-}
-
-sourceSets {
-    main {
-        java { setSrcDirs(listOf("src/main/java", "src/main/kotlin")) }
-        resources { setSrcDirs(listOf("src/main/resources")) }
-    }
-    test {
-        java { setSrcDirs(listOf("src/test/kotlin")) }
-        resources { setSrcDirs(listOf("src/test/resources")) }
-    }
-}
-
-application {
-    applicationName = project.name
-    mainClassName = mainClass
-}
-
-spotless {
-    java {
-        removeUnusedImports()
-        licenseHeader("// SPDX-License-Identifier: BSD-3-Clause")
-        trimTrailingWhitespace()
-        endWithNewline()
-    }
-    kotlin {
-        ktlint()
-        licenseHeader("// SPDX-License-Identifier: BSD-3-Clause")
-        trimTrailingWhitespace()
-        endWithNewline()
-    }
-}
-
-val mainManifest: Manifest = DefaultManifest((project as ProjectInternal).fileResolver)
-        .apply {
-            attributes["Implementation-Title"] = project.name
-            attributes["Implementation-Version"] = version
-            attributes["Main-Class"] = mainClass
-            if (java.sourceCompatibility < JavaVersion.VERSION_1_9) {
-                attributes["Automatic-Module-Name"] = moduleName
-            }
-        }
-
-tasks {
-    register<Jar>("dokkaJar") {
-        group = JavaBasePlugin.DOCUMENTATION_GROUP
-        description = "Create JAR with dokka documentation"
-        archiveClassifier.set("dokka")
-        from(dokka)
-    }
-    register<Jar>("sourcesJar") {
-        group = JavaBasePlugin.DOCUMENTATION_GROUP
-        description = "Assembles sources JAR"
-        archiveClassifier.set("sources")
-        from(sourceSets["main"].allSource)
-    }
-
-    named<JavaCompile>("compileJava") {
-        if (java.sourceCompatibility > JavaVersion.VERSION_1_8) {
-            inputs.property("moduleName", moduleName)
-            options.compilerArgs = listOf(
-                    // include Gradle dependencies as modules
-                    "--module-path", sourceSets["main"].compileClasspath.asPath)
-        }
-    }
-    withType<KotlinCompile> {
-        kotlinOptions {
-            freeCompilerArgs = listOf("-Xuse-experimental=kotlin.Experimental,kotlinx.serialization.ImplicitReflectionSerializer")
-            jvmTarget = "1.8"
-        }
-    }
-
-    withType<Jar> {
-        archiveBaseName.set("arara")
-        manifest.attributes.putAll(mainManifest.attributes)
-    }
-    named<ShadowJar>("shadowJar") {
-        manifest.attributes.putAll(mainManifest.attributes)
-        archiveAppendix.set("with-deps")
-        archiveClassifier.set("")
-    }
-    named<JavaExec>("run") {
-        if (JavaVersion.current() > JavaVersion.VERSION_1_8) {
-            doFirst {
-                jvmArgs = listOf(
-                        "--module-path", classpath.asPath
-                )
-            }
-        }
-    }
-
-    withType<Test> {
-        useJUnitPlatform()
-
-        testLogging {
-            exceptionFormat = TestExceptionFormat.FULL
-            events(TestLogEvent.STANDARD_OUT, TestLogEvent.STANDARD_ERROR,
-                    TestLogEvent.SKIPPED, TestLogEvent.PASSED, TestLogEvent.FAILED)
-        }
-    }
-}
-tasks.named<Task>("assembleDist").configure {
-    dependsOn("shadowJar", "jacocoTestReport")
-}
-
-publishing {
-    publications {
-        create<MavenPublication>("GitLab") {
-            groupId = project.group.toString()
-            artifactId = "arara"
-            version = project.version.toString()
-
-            pom {
-                name.set("arara")
-                description.set("arara is a TeX automation tool based on " +
-                        "rules and directives. It gives you a way to enhance " +
-                        "your TeX experience.")
-                inceptionYear.set("2012")
-                url.set("https://gitlab.com/islandoftex/arara")
-                organization {
-                    name.set("Island of TeX")
-                    url.set("https://gitlab.com/islandoftex")
-                }
-                licenses {
-                    license {
-                        name.set("New BSD License")
-                        url.set("http://www.opensource.org/licenses/bsd-license.php")
-                        distribution.set("repo")
-                    }
-                }
-                developers {
-                    developer {
-                        name.set("Paulo Roberto Massa Cereda")
-                        email.set("cereda at users.sf.net")
-                        id.set("cereda")
-                        url.set("https://tex.stackexchange.com/users/3094")
-                        roles.set(listOf("Lead developer", "Creator", "Duck enthusiast"))
-                    }
-                    developer {
-                        name.set("Ben Frank")
-                        id.set("benfrank")
-                        url.set("https://gitlab.com/benfrank")
-                        roles.set(listOf("Release coordinator v5"))
-                    }
-                    developer {
-                        name.set("Marco Daniel")
-                        email.set("marco.daniel at mada-nada.de")
-                        id.set("marcodaniel")
-                        url.set("https://tex.stackexchange.com/users/5239")
-                        roles.set(listOf("Contributor", "Tester", "Fast driver"))
-                    }
-                    developer {
-                        name.set("Brent Longborough")
-                        email.set("brent at longborough.org")
-                        id.set("brent")
-                        url.set("https://tex.stackexchange.com/users/344")
-                        roles.set(listOf("Developer", "Contributor", "Tester",
-                                "Haskell fanatic"))
-                    }
-                    developer {
-                        name.set("Nicola Talbot")
-                        email.set("nicola.lc.talbot at gmail.com")
-                        id.set("nlct")
-                        url.set("https://tex.stackexchange.com/users/19862")
-                        roles.set(listOf("Developer", "Contributor", "Tester",
-                                "Hat enthusiast"))
-                    }
-                }
-                scm {
-                    connection.set("scm:git:https://gitlab.com/islandoftex/arara.git")
-                    developerConnection.set("scm:git:https://gitlab.com/islandoftex/arara.git")
-                    url.set("https://gitlab.com/islandoftex/arara")
-                }
-                ciManagement {
-                    system.set("GitLab")
-                    url.set("https://gitlab.com/islandoftex/arara/pipelines")
-                }
-                issueManagement {
-                    system.set("GitLab")
-                    url.set("https://gitlab.com/islandoftex/arara/issues")
-                }
-            }
-
-            from(components["java"])
-            artifact(tasks["sourcesJar"])
-            artifact(tasks["dokkaJar"])
-        }
-    }
-
-    repositories {
-        maven {
-            url = uri("https://gitlab.com/api/v4/projects/14349047/packages/maven")
-            credentials(HttpHeaderCredentials::class) {
-                if (project.hasProperty("jobToken")) {
-                    name = "Job-Token"
-                    value = project.property("jobToken").toString()
-                } else {
-                    logger.warn("Will be unable to publish (jobToken missing)\n" +
-                            "Ignore this warning if you are not running the publish task " +
-                            "for the GitLab package repository.")
-                }
-            }
-            authentication {
-                create<HttpHeaderAuthentication>("header")
-            }
-        }
-    }
-}

Deleted: trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/Arara.kt
===================================================================
--- trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/Arara.kt	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/Arara.kt	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,115 +0,0 @@
-// SPDX-License-Identifier: BSD-3-Clause
-package org.islandoftex.arara
-
-import com.github.ajalt.clikt.parameters.options.versionOption
-import com.uchuhimo.konf.Config
-import java.time.LocalDate
-import kotlin.time.ExperimentalTime
-import org.islandoftex.arara.configuration.AraraSpec
-import org.islandoftex.arara.configuration.Configuration
-import org.islandoftex.arara.localization.LanguageController
-import org.islandoftex.arara.localization.Messages
-import org.islandoftex.arara.model.AraraException
-import org.islandoftex.arara.model.Extractor
-import org.islandoftex.arara.model.Interpreter
-import org.islandoftex.arara.ruleset.DirectiveUtils
-import org.islandoftex.arara.utils.DisplayUtils
-
-/**
- * arara's main entry point
- *
- * @author Island of TeX
- * @version 5.0
- * @since 5.0
- */
-object Arara {
-    // TODO: watch config files
-    val baseconfig = Config { addSpec(AraraSpec) }
-            .from.env()
-            .from.systemProperties()
-    var config = baseconfig.withLayer("initial")
-
-    /**
-     * Main method. This is the application entry point.
-     * @param args A string array containing all command line arguments.
-     */
-    @ExperimentalTime
-    @JvmStatic
-    fun main(args: Array<String>) {
-        // print the arara logo in the terminal; I just
-        // hope people use this tool in a good terminal with
-        // fixed-width fonts, otherwise the logo will be messed
-        DisplayUtils.printLogo()
-
-        val version = config[AraraSpec.Application.version]
-        CLI().versionOption(version, names = setOf("-V", "--version"),
-                message = {
-                    "arara $version\n" +
-                            "Copyright (c) ${LocalDate.now().year}, Island of TeX\n" +
-                            LanguageController.getMessage(Messages
-                                    .INFO_PARSER_NOTES) + "\n\n" +
-                            "New features in version $version:\n" +
-                            Arara::class.java
-                                    .getResource("/org/islandoftex/arara/configuration/release-notes")
-                                    .readText()
-                })
-                .main(args)
-    }
-
-    @ExperimentalTime
-    fun run() {
-        try {
-            // first of all, let's try to load a potential
-            // configuration file located at the current
-            // user's home directory; if there's a bad
-            // configuration file, arara will panic and
-            // end the execution
-            Configuration.load()
-
-            // let's print the current file information; it is a
-            // basic display, just the file name, the size properly
-            // formatted as a human readable format, and the last
-            // modification date; also, in this point, the logging
-            // feature starts to collect data (of course, if enabled
-            // either through the configuration file or manually
-            // in the command line)
-            DisplayUtils.printFileInformation()
-
-            // time to read the file and try to extract the directives;
-            // extract() brings us a list of directives properly parsed
-            // and almost ready to be handled; note that no directives
-            // in the provided file will raise an exception; this is
-            // by design and I opted to not include a default fallback
-            // (although it wouldn't be so difficult to write one,
-            // I decided not to take the risk)
-            val extracted = Extractor.extract(config[AraraSpec.Execution
-                    .reference])
-
-            // it is time to validate the directives (for example, we have
-            // a couple of keywords that cannot be used as directive
-            // parameters); another interesting feature of the validate()
-            // method is to replicate a directive that has the 'files'
-            // keyword on it, since it's the whole point of having 'files'
-            // in the first place; if you check the log file, you will see
-            // that the list of extracted directives might differ from
-            // the final list of directives to be effectively processed
-            // by arara
-            val directives = DirectiveUtils.process(extracted)
-
-            // time to shine, now the interpreter class will interpret
-            // one directive at a time, get the corresponding rule,
-            // set the parameters, evaluate it, get the tasks, run them,
-            // evaluate the result and print the status; note that
-            // arara, from this version on, will try to evaluate things
-            // progressively, so in case of an error, the previous tasks
-            // were already processed and potentially executed
-            Interpreter(directives).execute()
-        } catch (exception: AraraException) {
-            // something bad just happened, so arara will print the proper
-            // exception and provide details on it, if available; the idea
-            // here is to propagate an exception throughout the whole
-            // application and catch it here instead of a local treatment
-            DisplayUtils.printException(exception)
-        }
-    }
-}

Deleted: trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/CLI.kt
===================================================================
--- trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/CLI.kt	2020-04-10 11:14:07 UTC (rev 54639)
+++ trunk/Master/texmf-dist/source/support/arara/src/main/kotlin/org/islandoftex/arara/CLI.kt	2020-04-10 22:00:34 UTC (rev 54640)
@@ -1,171 +0,0 @@
-// SPDX-License-Identifier: BSD-3-Clause
-package org.islandoftex.arara
-
-import com.github.ajalt.clikt.core.CliktCommand
-import com.github.ajalt.clikt.parameters.arguments.argument
-import com.github.ajalt.clikt.parameters.arguments.multiple
-import com.github.ajalt.clikt.parameters.options.default
-import com.github.ajalt.clikt.parameters.options.flag
-import com.github.ajalt.clikt.parameters.options.option
-import com.github.ajalt.clikt.parameters.types.int
-import com.github.ajalt.clikt.parameters.types.path
-import com.github.ajalt.clikt.parameters.types.restrictTo
-import kotlin.system.exitProcess
-import kotlin.time.ClockMark
-import kotlin.time.ExperimentalTime
-import kotlin.time.MonoClock
-import kotlin.time.milliseconds
-import org.islandoftex.arara.configuration.AraraSpec
-import org.islandoftex.arara.filehandling.FileSearchingUtils
-import org.islandoftex.arara.localization.Language
-import org.islandoftex.arara.localization.LanguageController
-import org.islandoftex.arara.localization.Messages
-import org.islandoftex.arara.model.AraraException
-import org.islandoftex.arara.model.Session
-import org.islandoftex.arara.utils.CommonUtils
-import org.islandoftex.arara.utils.DisplayUtils
-import org.islandoftex.arara.utils.LoggingUtils
-
-/**
- * arara's command line interface
- *
- * @author Island of TeX
- * @version 5.0
- * @since 5.0
- */
-class CLI : CliktCommand(name = "arara", printHelpOnEmptyArgs = true) {
-    private val log by option("-l", "--log",
-            help = "Generate a log output")
-            .flag(default = AraraSpec.Execution.logging.default)
-    private val verbose by option("-v", "--verbose",
-            help = "Print the command output")
-            .flag("-s", "--silent",
-                    default = AraraSpec.Execution.verbose.default)
-    private val dryrun by option("-n", "--dry-run",
-            help = "Go through all the motions of running a command, but " +
-                    "with no actual calls")
-            .flag(default = AraraSpec.Execution.dryrun.default)
-    private val onlyheader by option("-H", "--header",
-            help = "Extract directives only in the file header")
-            .flag(default = AraraSpec.Execution.onlyHeader.default)
-    private val timeout by option("-t", "--timeout",
-            help = "Set the execution timeout (in milliseconds)")
-            .int().restrictTo(min = 1)
-    private val language by option("-L", "--language",
-            help = "Set the application language")
-            .default(AraraSpec.Application.defaultLanguageCode.default)
-    private val maxLoops by option("-m", "--max-loops",
-            help = "Set the maximum number of loops (> 0)")
-            .int().restrictTo(min = 1)
-            .default(AraraSpec.Execution.maxLoops.default)
-    private val preamble by option("-p", "--preamble",
-            help = "Set the file preamble based on the configuration file")
-    private val workingDirectory by option("-d", "--working-directory",
-            help = "Set the working directory for all tools")
-            .path(exists = true, fileOkay = false, readable = true)
-            .default(AraraSpec.Execution.workingDirectory.default)
-
-    private val reference by argument("file",
-            help = "The file(s) to evaluate and process")
-            .multiple(required = true)
-
-    /**
-     * Update the default configuration with the values parsed from the
-     * command line.
-     */
-    @ExperimentalTime
-    private fun updateConfigurationFromCommandLine() {
-        Arara.config[AraraSpec.Execution.language] = Language(language)
-        LanguageController.setLocale(Arara.config[AraraSpec.Execution.language]
-                .locale)
-
-        Arara.config[AraraSpec.Execution.logging] = log
-        Arara.config[AraraSpec.Execution.verbose] = verbose
-        Arara.config[AraraSpec.Execution.dryrun] = dryrun
-        Arara.config[AraraSpec.Execution.onlyHeader] = onlyheader
-        Arara.config[AraraSpec.Execution.maxLoops] = maxLoops
-        Arara.config[AraraSpec.Execution.workingDirectory] = workingDirectory
-        preamble?.let {
-            val preambles = Arara.config[AraraSpec.Execution.preambles]
-            if (preambles.containsKey(it)) {
-                Arara.config[AraraSpec.Execution.preamblesActive] = true
-                Arara.config[AraraSpec.Execution.preamblesContent] =
-                        // will never throw (see check above)
-                        preambles.getValue(it)
-            } else {
-                throw AraraException(
-                        LanguageController.getMessage(
-                                Messages.ERROR_PARSER_INVALID_PREAMBLE, it)
-                )
-            }
-        }
-        timeout?.let {
-            Arara.config[AraraSpec.Execution.timeout] = true
-            Arara.config[AraraSpec.Execution.timeoutValue] = it.milliseconds
-        }
-
-        Arara.config[AraraSpec.UserInteraction.displayTime] = true
-    }
-
-    /**
-     * The actual main method of arara (when run in command-line mode)
-     */
-    @ExperimentalTime
-    override fun run() {
-        // the first component to be initialized is the
-        // logging controller; note init() actually disables
-        // the logging, so early exceptions won't generate
-        // a lot of noise in the terminal
-        LoggingUtils.init()
-
-        // arara features a stopwatch, so we can see how much time has passed
-        // since everything started; internally, this class makes use of
-        // nano time, so we might get an interesting precision here
-        // (although timing is not a serious business in here, it's
-        // just a cool addition)
-        val executionStart: ClockMark = MonoClock.markNow()
-
-        // arara stores the environment variables accessible at the start
-        // of the execution in the session object for the user
-        Session.updateEnvironmentVariables()
-
-        // logging has to be initialized only once and for all because
-        // context resets lead to missing output
-        LoggingUtils.enableLogging(log)
-
-        try {
-            // TODO: this will have to change for parallelization
-            reference.forEach {
-                // TODO: do we have to reset some more file-specific config?
-                // especially the working directory will have to be set and
-                // changed
-                Arara.config = Arara.baseconfig.withLayer(it)
-                // next, update the configuration
-                updateConfigurationFromCommandLine()
-                FileSearchingUtils.discoverFile(it)
-                Arara.run()
-                // add an empty line between file executions
-                println()
-            }
-
-            // this is the last command from arara; once the execution time is
-            // available, print it; note that this notification is suppressed
-            // when the command line parsing returns false as result (it makes
-            // no sense to print the execution time for a help message, I guess)
-            DisplayUtils.printTime(executionStart.elapsedNow().inSeconds)
-        } catch (ex: AraraException) {
-            DisplayUtils.printException(ex)
-            Arara.config[AraraSpec.Execution.status] = 2
-        }
-
-        // gets the application exit status; the rule here is:
-        // 0 : everything went just fine (note that the dry-run mode always
-        //     makes arara exit with 0, unless it is an error in the directive
-        //     builder itself).
-        // 1 : one of the tasks failed, so the execution ended abruptly. This
-        //     means the error relies on the command line call, not with arara.
-        // 2 : arara just handled an exception, meaning that something bad
-        //     just happened and might require user intervention.
-        exitProcess(CommonUtils.exitStatus)
-    }
-}



More information about the tex-live-commits mailing list.