arara: How to widen out clean.yaml











up vote
4
down vote

favorite












I read the clean-rule for version 4.
% arara: clean: { extensions: [aux, bcl ] } deletes jobname.aux and jobname.bcl.



I would like to have a rule "cleanx.yaml" (or a shifter for clean.yaml), which deletes all files (*.aux and *.bcl) with the named extensions.



How can I do that? I tried concat('*') for 'base', but this does not work.



!config
# Arara, the cool TeX automation tool
# Copyright (c) 2018, Paulo Roberto Massa Cereda
# All rights reserved.
#
# This rule is part of arara.
identifier: clean
name: Clean
authors:
- Marco Daniel
- Paulo Cereda
commands:
- name: Cleaning feature
command: >
@{
prefix = ;
if (isUnix()) {
prefix = [ 'rm', '-f' ];
}
else {
prefix = [ 'cmd', '/c', 'del' ];
}
if (extensions == '') {
if (getOriginalFile() == file) {
throwError('I cannot remove the main file reference.');
}
return getCommand(prefix, file);
}
else {
base = getBasename(file);
removals = ;
foreach(extension : extensions) {
if (base.concat('.').concat(extension) == getOriginalFile()) {
throwError('I cannot remove the main file reference.');
}
removals.add(getCommand(prefix, base.concat('.').concat(extension)));
}
return removals;
}
}
arguments:
- identifier: extensions
flag: >
@{
if (isList(parameters.extensions)) {
return parameters.extensions;
}
else {
throwError('I was expecting a list of extensions.');
}
}









share|improve this question




























    up vote
    4
    down vote

    favorite












    I read the clean-rule for version 4.
    % arara: clean: { extensions: [aux, bcl ] } deletes jobname.aux and jobname.bcl.



    I would like to have a rule "cleanx.yaml" (or a shifter for clean.yaml), which deletes all files (*.aux and *.bcl) with the named extensions.



    How can I do that? I tried concat('*') for 'base', but this does not work.



    !config
    # Arara, the cool TeX automation tool
    # Copyright (c) 2018, Paulo Roberto Massa Cereda
    # All rights reserved.
    #
    # This rule is part of arara.
    identifier: clean
    name: Clean
    authors:
    - Marco Daniel
    - Paulo Cereda
    commands:
    - name: Cleaning feature
    command: >
    @{
    prefix = ;
    if (isUnix()) {
    prefix = [ 'rm', '-f' ];
    }
    else {
    prefix = [ 'cmd', '/c', 'del' ];
    }
    if (extensions == '') {
    if (getOriginalFile() == file) {
    throwError('I cannot remove the main file reference.');
    }
    return getCommand(prefix, file);
    }
    else {
    base = getBasename(file);
    removals = ;
    foreach(extension : extensions) {
    if (base.concat('.').concat(extension) == getOriginalFile()) {
    throwError('I cannot remove the main file reference.');
    }
    removals.add(getCommand(prefix, base.concat('.').concat(extension)));
    }
    return removals;
    }
    }
    arguments:
    - identifier: extensions
    flag: >
    @{
    if (isList(parameters.extensions)) {
    return parameters.extensions;
    }
    else {
    throwError('I was expecting a list of extensions.');
    }
    }









    share|improve this question


























      up vote
      4
      down vote

      favorite









      up vote
      4
      down vote

      favorite











      I read the clean-rule for version 4.
      % arara: clean: { extensions: [aux, bcl ] } deletes jobname.aux and jobname.bcl.



      I would like to have a rule "cleanx.yaml" (or a shifter for clean.yaml), which deletes all files (*.aux and *.bcl) with the named extensions.



      How can I do that? I tried concat('*') for 'base', but this does not work.



      !config
      # Arara, the cool TeX automation tool
      # Copyright (c) 2018, Paulo Roberto Massa Cereda
      # All rights reserved.
      #
      # This rule is part of arara.
      identifier: clean
      name: Clean
      authors:
      - Marco Daniel
      - Paulo Cereda
      commands:
      - name: Cleaning feature
      command: >
      @{
      prefix = ;
      if (isUnix()) {
      prefix = [ 'rm', '-f' ];
      }
      else {
      prefix = [ 'cmd', '/c', 'del' ];
      }
      if (extensions == '') {
      if (getOriginalFile() == file) {
      throwError('I cannot remove the main file reference.');
      }
      return getCommand(prefix, file);
      }
      else {
      base = getBasename(file);
      removals = ;
      foreach(extension : extensions) {
      if (base.concat('.').concat(extension) == getOriginalFile()) {
      throwError('I cannot remove the main file reference.');
      }
      removals.add(getCommand(prefix, base.concat('.').concat(extension)));
      }
      return removals;
      }
      }
      arguments:
      - identifier: extensions
      flag: >
      @{
      if (isList(parameters.extensions)) {
      return parameters.extensions;
      }
      else {
      throwError('I was expecting a list of extensions.');
      }
      }









      share|improve this question















      I read the clean-rule for version 4.
      % arara: clean: { extensions: [aux, bcl ] } deletes jobname.aux and jobname.bcl.



      I would like to have a rule "cleanx.yaml" (or a shifter for clean.yaml), which deletes all files (*.aux and *.bcl) with the named extensions.



      How can I do that? I tried concat('*') for 'base', but this does not work.



      !config
      # Arara, the cool TeX automation tool
      # Copyright (c) 2018, Paulo Roberto Massa Cereda
      # All rights reserved.
      #
      # This rule is part of arara.
      identifier: clean
      name: Clean
      authors:
      - Marco Daniel
      - Paulo Cereda
      commands:
      - name: Cleaning feature
      command: >
      @{
      prefix = ;
      if (isUnix()) {
      prefix = [ 'rm', '-f' ];
      }
      else {
      prefix = [ 'cmd', '/c', 'del' ];
      }
      if (extensions == '') {
      if (getOriginalFile() == file) {
      throwError('I cannot remove the main file reference.');
      }
      return getCommand(prefix, file);
      }
      else {
      base = getBasename(file);
      removals = ;
      foreach(extension : extensions) {
      if (base.concat('.').concat(extension) == getOriginalFile()) {
      throwError('I cannot remove the main file reference.');
      }
      removals.add(getCommand(prefix, base.concat('.').concat(extension)));
      }
      return removals;
      }
      }
      arguments:
      - identifier: extensions
      flag: >
      @{
      if (isList(parameters.extensions)) {
      return parameters.extensions;
      }
      else {
      throwError('I was expecting a list of extensions.');
      }
      }






      arara






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 11 mins ago

























      asked 2 hours ago









      cis

      570414




      570414






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          4
          down vote



          accepted










          This new rule might do exactly what you want. However, be mindful to use it with great care!



          File cleanx.yaml:



          !config
          identifier: cleanx
          name: CleanX
          authors:
          - Paulo Cereda
          commands:
          - name: Cleaning feature
          command: >
          @{
          prefix = ;
          if (isUnix()) {
          prefix = [ 'rm', '-f' ];
          }
          else {
          prefix = [ 'cmd', '/c', 'del' ];
          }
          if (extensions == '') {
          if (getOriginalFile() == file) {
          throwError('I cannot remove the main file reference.');
          }
          return getCommand(prefix, file);
          }
          else {
          directory = getOriginalReference().getAbsoluteFile().getParent();
          matches = listFilesByExtensions(directory, extensions, recursive);
          removals = ;
          foreach(match : matches) {
          if (match.equals(getOriginalReference())) {
          throwError('I cannot remove the main file reference.');
          }
          removals.add(getCommand(prefix, match));
          }
          return removals;
          }
          }
          arguments:
          - identifier: extensions
          flag: >
          @{
          if (isList(parameters.extensions)) {
          return parameters.extensions;
          }
          else {
          throwError('I was expecting a list of extensions.');
          }
          }
          - identifier: recursive
          flag: >
          @{
          return isTrue(parameters.recursive);
          }
          default: false


          Note: this rule makes use of a helper method that searches from within the parent directory of the original reference. I also disabled recursive searches by default. However, one can enable it by using the directive parameter recursive and provide a natural boolean value such as true or yes.



          A quick experiment. My file header:



          % arara: cleanx: { extensions: [ aux ] }


          Terminal usage:



          $ touch foo.aux bar.aux
          $ arara -n test.tex
          __ _ _ __ __ _ _ __ __ _
          / _` | '__/ _` | '__/ _` |
          | (_| | | | (_| | | | (_| |
          __,_|_| __,_|_| __,_|

          Processing 'test.tex' (size: 42 bytes, last modified: 11/12/2018
          12:41:56), please wait.

          [DR] (CleanX) Cleaning feature
          -----------------------------------------------------------------
          Author: Paulo Cereda
          About to run: [ rm, -f, /home/paulo/foo.aux ]

          [DR] (CleanX) Cleaning feature
          -----------------------------------------------------------------
          Author: Paulo Cereda
          About to run: [ rm, -f, /home/paulo/bar.aux ]

          Total: 0.19 seconds





          share|improve this answer





















          • Works fine.... ;)
            – cis
            1 hour ago










          • @cis Yaaay! :)
            – Paulo Cereda
            1 hour ago











          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "85"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














           

          draft saved


          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f459627%2farara-how-to-widen-out-clean-yaml%23new-answer', 'question_page');
          }
          );

          Post as a guest
































          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          4
          down vote



          accepted










          This new rule might do exactly what you want. However, be mindful to use it with great care!



          File cleanx.yaml:



          !config
          identifier: cleanx
          name: CleanX
          authors:
          - Paulo Cereda
          commands:
          - name: Cleaning feature
          command: >
          @{
          prefix = ;
          if (isUnix()) {
          prefix = [ 'rm', '-f' ];
          }
          else {
          prefix = [ 'cmd', '/c', 'del' ];
          }
          if (extensions == '') {
          if (getOriginalFile() == file) {
          throwError('I cannot remove the main file reference.');
          }
          return getCommand(prefix, file);
          }
          else {
          directory = getOriginalReference().getAbsoluteFile().getParent();
          matches = listFilesByExtensions(directory, extensions, recursive);
          removals = ;
          foreach(match : matches) {
          if (match.equals(getOriginalReference())) {
          throwError('I cannot remove the main file reference.');
          }
          removals.add(getCommand(prefix, match));
          }
          return removals;
          }
          }
          arguments:
          - identifier: extensions
          flag: >
          @{
          if (isList(parameters.extensions)) {
          return parameters.extensions;
          }
          else {
          throwError('I was expecting a list of extensions.');
          }
          }
          - identifier: recursive
          flag: >
          @{
          return isTrue(parameters.recursive);
          }
          default: false


          Note: this rule makes use of a helper method that searches from within the parent directory of the original reference. I also disabled recursive searches by default. However, one can enable it by using the directive parameter recursive and provide a natural boolean value such as true or yes.



          A quick experiment. My file header:



          % arara: cleanx: { extensions: [ aux ] }


          Terminal usage:



          $ touch foo.aux bar.aux
          $ arara -n test.tex
          __ _ _ __ __ _ _ __ __ _
          / _` | '__/ _` | '__/ _` |
          | (_| | | | (_| | | | (_| |
          __,_|_| __,_|_| __,_|

          Processing 'test.tex' (size: 42 bytes, last modified: 11/12/2018
          12:41:56), please wait.

          [DR] (CleanX) Cleaning feature
          -----------------------------------------------------------------
          Author: Paulo Cereda
          About to run: [ rm, -f, /home/paulo/foo.aux ]

          [DR] (CleanX) Cleaning feature
          -----------------------------------------------------------------
          Author: Paulo Cereda
          About to run: [ rm, -f, /home/paulo/bar.aux ]

          Total: 0.19 seconds





          share|improve this answer





















          • Works fine.... ;)
            – cis
            1 hour ago










          • @cis Yaaay! :)
            – Paulo Cereda
            1 hour ago















          up vote
          4
          down vote



          accepted










          This new rule might do exactly what you want. However, be mindful to use it with great care!



          File cleanx.yaml:



          !config
          identifier: cleanx
          name: CleanX
          authors:
          - Paulo Cereda
          commands:
          - name: Cleaning feature
          command: >
          @{
          prefix = ;
          if (isUnix()) {
          prefix = [ 'rm', '-f' ];
          }
          else {
          prefix = [ 'cmd', '/c', 'del' ];
          }
          if (extensions == '') {
          if (getOriginalFile() == file) {
          throwError('I cannot remove the main file reference.');
          }
          return getCommand(prefix, file);
          }
          else {
          directory = getOriginalReference().getAbsoluteFile().getParent();
          matches = listFilesByExtensions(directory, extensions, recursive);
          removals = ;
          foreach(match : matches) {
          if (match.equals(getOriginalReference())) {
          throwError('I cannot remove the main file reference.');
          }
          removals.add(getCommand(prefix, match));
          }
          return removals;
          }
          }
          arguments:
          - identifier: extensions
          flag: >
          @{
          if (isList(parameters.extensions)) {
          return parameters.extensions;
          }
          else {
          throwError('I was expecting a list of extensions.');
          }
          }
          - identifier: recursive
          flag: >
          @{
          return isTrue(parameters.recursive);
          }
          default: false


          Note: this rule makes use of a helper method that searches from within the parent directory of the original reference. I also disabled recursive searches by default. However, one can enable it by using the directive parameter recursive and provide a natural boolean value such as true or yes.



          A quick experiment. My file header:



          % arara: cleanx: { extensions: [ aux ] }


          Terminal usage:



          $ touch foo.aux bar.aux
          $ arara -n test.tex
          __ _ _ __ __ _ _ __ __ _
          / _` | '__/ _` | '__/ _` |
          | (_| | | | (_| | | | (_| |
          __,_|_| __,_|_| __,_|

          Processing 'test.tex' (size: 42 bytes, last modified: 11/12/2018
          12:41:56), please wait.

          [DR] (CleanX) Cleaning feature
          -----------------------------------------------------------------
          Author: Paulo Cereda
          About to run: [ rm, -f, /home/paulo/foo.aux ]

          [DR] (CleanX) Cleaning feature
          -----------------------------------------------------------------
          Author: Paulo Cereda
          About to run: [ rm, -f, /home/paulo/bar.aux ]

          Total: 0.19 seconds





          share|improve this answer





















          • Works fine.... ;)
            – cis
            1 hour ago










          • @cis Yaaay! :)
            – Paulo Cereda
            1 hour ago













          up vote
          4
          down vote



          accepted







          up vote
          4
          down vote



          accepted






          This new rule might do exactly what you want. However, be mindful to use it with great care!



          File cleanx.yaml:



          !config
          identifier: cleanx
          name: CleanX
          authors:
          - Paulo Cereda
          commands:
          - name: Cleaning feature
          command: >
          @{
          prefix = ;
          if (isUnix()) {
          prefix = [ 'rm', '-f' ];
          }
          else {
          prefix = [ 'cmd', '/c', 'del' ];
          }
          if (extensions == '') {
          if (getOriginalFile() == file) {
          throwError('I cannot remove the main file reference.');
          }
          return getCommand(prefix, file);
          }
          else {
          directory = getOriginalReference().getAbsoluteFile().getParent();
          matches = listFilesByExtensions(directory, extensions, recursive);
          removals = ;
          foreach(match : matches) {
          if (match.equals(getOriginalReference())) {
          throwError('I cannot remove the main file reference.');
          }
          removals.add(getCommand(prefix, match));
          }
          return removals;
          }
          }
          arguments:
          - identifier: extensions
          flag: >
          @{
          if (isList(parameters.extensions)) {
          return parameters.extensions;
          }
          else {
          throwError('I was expecting a list of extensions.');
          }
          }
          - identifier: recursive
          flag: >
          @{
          return isTrue(parameters.recursive);
          }
          default: false


          Note: this rule makes use of a helper method that searches from within the parent directory of the original reference. I also disabled recursive searches by default. However, one can enable it by using the directive parameter recursive and provide a natural boolean value such as true or yes.



          A quick experiment. My file header:



          % arara: cleanx: { extensions: [ aux ] }


          Terminal usage:



          $ touch foo.aux bar.aux
          $ arara -n test.tex
          __ _ _ __ __ _ _ __ __ _
          / _` | '__/ _` | '__/ _` |
          | (_| | | | (_| | | | (_| |
          __,_|_| __,_|_| __,_|

          Processing 'test.tex' (size: 42 bytes, last modified: 11/12/2018
          12:41:56), please wait.

          [DR] (CleanX) Cleaning feature
          -----------------------------------------------------------------
          Author: Paulo Cereda
          About to run: [ rm, -f, /home/paulo/foo.aux ]

          [DR] (CleanX) Cleaning feature
          -----------------------------------------------------------------
          Author: Paulo Cereda
          About to run: [ rm, -f, /home/paulo/bar.aux ]

          Total: 0.19 seconds





          share|improve this answer












          This new rule might do exactly what you want. However, be mindful to use it with great care!



          File cleanx.yaml:



          !config
          identifier: cleanx
          name: CleanX
          authors:
          - Paulo Cereda
          commands:
          - name: Cleaning feature
          command: >
          @{
          prefix = ;
          if (isUnix()) {
          prefix = [ 'rm', '-f' ];
          }
          else {
          prefix = [ 'cmd', '/c', 'del' ];
          }
          if (extensions == '') {
          if (getOriginalFile() == file) {
          throwError('I cannot remove the main file reference.');
          }
          return getCommand(prefix, file);
          }
          else {
          directory = getOriginalReference().getAbsoluteFile().getParent();
          matches = listFilesByExtensions(directory, extensions, recursive);
          removals = ;
          foreach(match : matches) {
          if (match.equals(getOriginalReference())) {
          throwError('I cannot remove the main file reference.');
          }
          removals.add(getCommand(prefix, match));
          }
          return removals;
          }
          }
          arguments:
          - identifier: extensions
          flag: >
          @{
          if (isList(parameters.extensions)) {
          return parameters.extensions;
          }
          else {
          throwError('I was expecting a list of extensions.');
          }
          }
          - identifier: recursive
          flag: >
          @{
          return isTrue(parameters.recursive);
          }
          default: false


          Note: this rule makes use of a helper method that searches from within the parent directory of the original reference. I also disabled recursive searches by default. However, one can enable it by using the directive parameter recursive and provide a natural boolean value such as true or yes.



          A quick experiment. My file header:



          % arara: cleanx: { extensions: [ aux ] }


          Terminal usage:



          $ touch foo.aux bar.aux
          $ arara -n test.tex
          __ _ _ __ __ _ _ __ __ _
          / _` | '__/ _` | '__/ _` |
          | (_| | | | (_| | | | (_| |
          __,_|_| __,_|_| __,_|

          Processing 'test.tex' (size: 42 bytes, last modified: 11/12/2018
          12:41:56), please wait.

          [DR] (CleanX) Cleaning feature
          -----------------------------------------------------------------
          Author: Paulo Cereda
          About to run: [ rm, -f, /home/paulo/foo.aux ]

          [DR] (CleanX) Cleaning feature
          -----------------------------------------------------------------
          Author: Paulo Cereda
          About to run: [ rm, -f, /home/paulo/bar.aux ]

          Total: 0.19 seconds






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 1 hour ago









          Paulo Cereda

          32.7k8122205




          32.7k8122205












          • Works fine.... ;)
            – cis
            1 hour ago










          • @cis Yaaay! :)
            – Paulo Cereda
            1 hour ago


















          • Works fine.... ;)
            – cis
            1 hour ago










          • @cis Yaaay! :)
            – Paulo Cereda
            1 hour ago
















          Works fine.... ;)
          – cis
          1 hour ago




          Works fine.... ;)
          – cis
          1 hour ago












          @cis Yaaay! :)
          – Paulo Cereda
          1 hour ago




          @cis Yaaay! :)
          – Paulo Cereda
          1 hour ago


















           

          draft saved


          draft discarded



















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f459627%2farara-how-to-widen-out-clean-yaml%23new-answer', 'question_page');
          }
          );

          Post as a guest




















































































          Popular posts from this blog

          How to change which sound is reproduced for terminal bell?

          Can I use Tabulator js library in my java Spring + Thymeleaf project?

          Title Spacing in Bjornstrup Chapter, Removing Chapter Number From Contents