!config
# Arara, the cool TeX automation tool
# Copyright (c) 2023, Island of TeX
# All rights reserved.
#
# This rule is part of arara.
identifier: datatooltk
name: DatatoolTk
authors:
- Island of TeX
commands:
- name: The DatatoolTk software
command: >
@{
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,
truncate);
}
arguments:
- identifier: options
flag: >
@{
if (isList(parameters.options)) {
return parameters.options;
}
else {
throwError('I was expecting a list of options.');
}
}
- identifier: output
flag: >
@{
[ '--output', parameters.output ]
}
required: true
- identifier: csv
flag: >
@{
[ '--csv', parameters.csv ]
}
- identifier: sep
flag: >
@{
[ '--sep', parameters.sep ]
}
- identifier: delim
flag: >
@{
[ '--delim', parameters.delim ]
}
- identifier: name
flag: >
@{
[ '--name', parameters.name ]
}
- identifier: sql
flag: >
@{
[ '--sql', parameters.sql ]
}
- identifier: sqldb
flag: >
@{
[ '--sqldb', parameters.sqldb ]
}
- identifier: sqluser
flag: >
@{
[ '--sqluser', parameters.sqluser ]
}
- identifier: noconsole
flag: >
@{
[ '--noconsole-action', isEmpty(parameters.noconsole, 'gui', parameters.noconsole) ]
}
default: ''
- identifier: probsoln
flag: >
@{
[ '--probsoln', parameters.probsoln ]
}
- identifier: input
flag: >
@{
[ '--in', parameters.input ]
}
- identifier: sort
flag: >
@{
[ '--sort', parameters.sort ]
}
- identifier: sortlocale
flag: >
@{
[ '--sort-locale', parameters.sortlocale ]
}
- identifier: sortcase
flag: >
@{
isTrue(parameters.sortcase, '--sort-case-sensitive',
'--sort-case-insensitive')
}
- identifier: seed
flag: >
@{
[ '--seed', parameters.seed ]
}
- identifier: shuffle
flag: >
@{
isTrue(parameters.shuffle, '--shuffle', '--noshuffle')
}
- identifier: csvheader
flag: >
@{
isTrue(parameters.csvheader, '--csvheader', '--nocsvheader')
}
- identifier: debug
flag: >
@{
isTrue(parameters.debug, '--debug', '--nodebug')
}
- identifier: owneronly
flag: >
@{
isTrue(parameters.owneronly, '--owner-only', '--noowner-only')
}
- identifier: maptex
flag: >
@{
isTrue(parameters.maptex, '--map-tex-specials',
'--nomap-tex-specials')
}
- identifier: xls
flag: >
@{
[ '--xls', parameters.xls ]
}
- identifier: ods
flag: >
@{
[ '--ods', parameters.ods ]
}
- identifier: sheet
flag: >
@{
[ '--sheet', parameters.sheet ]
}
- identifier: filterop
flag: >
@{
if (['and', 'or'].contains(parameters.filterop)) {
return "--filter-" + parameters.filterop;
}
else {
throwError('The provided filterop value is not valid.');
}
}
- identifier: filters
flag: >
@{
if (isList(parameters.filters)) {
elements = [];
foreach (element : parameters.filters) {
if (isList(element) && element.size() == 3) {
elements.add('--filter');
elements.add(element);
}
else {
throwError('I was expecting a filter ' +
'list [<label>, <op>, <value>]');
}
}
return elements;
}
else {
throwError('I was expecting filters: [ [<label>, <op>, <value>], ' +
'..., [<label>, <op>, <value>] ].');
}
}
- identifier: truncate
flag: >
@{
[ '--truncate', parameters.truncate ]
}