!config # Arara, the cool TeX automation tool # Copyright (c) 2020, Island of TeX # All rights reserved. # # This rule is part of arara. identifier: bib2gls name: Bib2Gls authors: - Island of TeX commands: - name: The Bib2Gls software command: > @{ if (!clean.isEmpty()) { prefix = []; if (isUnix()) { prefix = [ 'rm', '-f', '-v' ]; } else { prefix = [ 'cmd', '/c', 'del' ]; } base = getBasename(reference); removals = []; lines = readFromFile(base.concat('.').concat('aux')); java.util.regex.Pattern resourcePattern = java.util.regex.Pattern.compile( "\\\\glsxtr@resource\\{.*\\}\\{([^\\}]+)\\}"); if (!trans.isEmpty()) { if (trans[0] == getOriginalFile()) { throwError('I cannot remove the main file reference.'); } removals.add(getCommand(prefix, trans)); } else { removals.add(getCommand(prefix, base.concat('.glg'))); } foreach (line: lines) { matcher = resourcePattern.matcher(line); if (matcher.matches()) { removals.add(getCommand(prefix, matcher.group(1).concat('.glstex'))); } } return removals; } else { return getCommand('bib2gls', dir, trans, group, interpret, breakspace, trimfields, recordcount, recordcountunit, cite, verbose, merge, locale, uniscript, packages, ignore, custom, mapformats, options, getBasename(reference.getName())); } } arguments: - identifier: dir flag: > @{ return ['--dir', parameters.dir] } - identifier: trans flag: > @{ if ([ 'tex', 'ltx', 'cls', 'sty', 'bib', 'dtx', 'ins', 'def', 'ldf' ].contains(parameters.trans)) { throwError('Forbidden transcript extension'); } return ['--log-file', getBasename(reference.getName())+"."+parameters.trans] } - identifier: locale flag: > @{ return ['--locale', parameters.locale] } - identifier: group flag: > @{ isTrue(parameters.group, '--group', '--no-group') } - identifier: interpret flag: > @{ isTrue(parameters.interpret, '--interpret', '--no-interpret') } - identifier: breakspace flag: > @{ isTrue(parameters.breakspace, '--break-space', '--no-break-space') } - identifier: trimfields flag: > @{ isTrue(parameters.trimfields, '--trim-fields', '--no-trim-fields') } - identifier: recordcount flag: > @{ isTrue(parameters.recordcount, '--record-count', '--no-record-count') } - identifier: recordcountunit flag: > @{ isTrue(parameters.recordcountunit, '--record-count-unit', '--no-record-count-unit') } - identifier: cite flag: > @{ isTrue(parameters.cite, '--cite-as-record', '--no-cite-as-record') } - identifier: verbose flag: > @{ isTrue(parameters.verbose, '--verbose', '--no-verbose') } - identifier: merge flag: > @{ isTrue(parameters.merge, '--merge-wrglossary-records', '--no-merge-wrglossary-records') } - identifier: uniscript flag: > @{ isTrue(parameters.uniscript, '--support-unicode-script', '--no-support-unicode-script') } - identifier: packages flag: > @{ if (isList(parameters.packages)) { elements = []; foreach (element : parameters.packages) { elements.add('--packages'); elements.add(element); } return elements; } else { throwError('I was expecting a list of package names.'); } } - identifier: ignore flag: > @{ if (isList(parameters.ignore)) { elements = []; foreach (element : parameters.ignore) { elements.add('--ignore-packages'); elements.add(element); } return elements; } else { throwError('I was expecting a list of package names.'); } } - identifier: custom flag: > @{ if (isList(parameters.custom)) { elements = []; foreach (element : parameters.custom) { elements.add('--custom-packages'); elements.add(element); } return elements; } else { throwError('I was expecting a list of package names.'); } } - identifier: mapformats flag: > @{ if (isList(parameters.mapformats)) { elements = []; foreach (element : parameters.mapformats) { if (isList(element) && element.size() == 2) { elements.add('--map-format'); elements.add(element.get(0) + ':' + element.get(1)); } else { throwError('I was expecting a map ' + 'format list [, ] '); } } return elements; } else { throwError('I was expecting mapformats: [ [, ], ' + '..., [, ] ].'); } } - identifier: options flag: > @{ if (isList(parameters.options)) { return parameters.options; } else { throwError('I was expecting a list of options.'); } } - identifier: clean flag: > @{ return isTrue(parameters.clean, 'true', ''); }