!config
# Arara, the cool TeX automation tool
# Copyright (c) 2024, Island of TeX
# All rights reserved.
#
# This rule is part of arara.
identifier: texfmt
name: tex-fmt
authors:
- William Underwood
- Island of TeX
commands:
- name: The tex-fmt application
 command: >
   @{
       return getCommand('tex-fmt', check, print, messages, tabs, stdin,
                         config, location, wrap, length, tabsize, options,
                         reference);
   }
arguments:
- identifier: check
 flag: >
   @{
       isTrue(parameters.check, '--check')
   }
- identifier: print
 flag: >
   @{
       isTrue(parameters.print, '--print')
   }
- identifier: messages
 flag: >
   @{
     if ([ 'verbose', 'quiet', 'trace' ].contains(parameters.messages)) {
         return '--'.concat(parameters.messages);
     }
     else {
         throwError('You provided an invalid value for messages.');
     }
   }
- identifier: tabs
 flag: >
   @{
       isTrue(parameters.tabs, '--usetabs')
   }
- identifier: stdin
 flag: >
   @{
       isTrue(parameters.stdin, '--stdin')
   }
- identifier: location
 flag: >
   @{
       check = parameters.containsKey('config');
       if (check && isTrue(parameters.config)) {
           return [ '--config', parameters.location ];
       }
       else {
           throwError('This key requires config to be enabled.');
       }
   }
- identifier: config
 flag: >
   @{
       isFalse(parameters.config, '--noconfig');
   }
- identifier: wrap
 flag: >
   @{
       isFalse(parameters.wrap, '--nowrap');
   }
- identifier: length
 flag: >
   @{
       check = parameters.containsKey('wrap');
       wrap = check ? parameters.wrap : true;
       if (isTrue(wrap)) {
           return [ '--wraplen', parameters.length ];
       }
       else {
           throwError('This key cannot be used when wrap is disabled.');
       }
   }
- identifier: tabsize
 flag: >
   @{
       [ '--tabsize', parameters.tabsize ]
   }
- identifier: options
 flag: >
   @{
       if (isList(parameters.options)) {
           return parameters.options;
       }
       else {
           throwError('I was expecting a list of options.');
       }
   }