!config
# Arara, the cool TeX automation tool
# Copyright (c) 2023, Island of TeX
# All rights reserved.
#
# This rule is part of arara.
identifier: sage
name: Sage
authors:
- Island of TeX
commands:
- name: The command line tool
 command: >
   @{
       base = getBasename(reference.fileName);
       e = isList(extension) ? extension[0] : extension;
       input = base.concat('.').concat(e);
       return getCommand(program, command, dotsage,
                         options, input);
   }
arguments:
- identifier: program
 flag: >
   @{
       return parameters.program;
   }
 default: 'sage'
- identifier: extension
 flag: >
   @{
       exts = [ 'sage', 'py', 'spyx' ];
       if (exts.contains(parameters.extension)) {
           return parameters.extension;
       }
       else {
           throwError('The provided extension is invalid.');
       }
   }
 default: 'sage'
- identifier: command
 flag: >
   @{
       return [ '-c', parameters.command ];
   }
- identifier: dotsage
 flag: >
   @{
       return isFalse(parameters.dotsage, '--nodotsage');
   }
- identifier: options
 flag: >
   @{
       if (isList(parameters.options)) {
           return parameters.options;
       }
       else {
           throwError('I was expecting a list of options.');
       }
   }