diff --git a/.github/workflows/build-imagej.yml b/.github/workflows/build-imagej.yml index 3c2c9d979..95ac6e3e0 100644 --- a/.github/workflows/build-imagej.yml +++ b/.github/workflows/build-imagej.yml @@ -25,7 +25,7 @@ jobs: if: github.ref == 'refs/heads/master' with: token: ${{ secrets.GITHUB_TOKEN }} - tag: 1.53m + tag: 1.53m1 name: ImageJ.JS files: imagej-js-dist/ allow_override: true diff --git a/src/main/java/ij/plugin/Macro_Runner.java b/src/main/java/ij/plugin/Macro_Runner.java index 28768fc2e..aa096bf7f 100644 --- a/src/main/java/ij/plugin/Macro_Runner.java +++ b/src/main/java/ij/plugin/Macro_Runner.java @@ -13,7 +13,17 @@ macros and scripts opened using the Plugins/Macros/Run command. */ public class Macro_Runner implements PlugIn { private static String filePath; + private static boolean returnError = false; + public Macro_Runner() { + this(); + } + + public Macro_Runner(boolean returnError) { + this.returnError = returnError; + this(); + } + /** Opens and runs the specified macro file (.txt or .ijm) or script file (.js, .bsh or .py) on the current thread. Displays a file open dialog if name is an empty string. The macro or script is assumed to be in the ImageJ @@ -123,8 +133,13 @@ public String runMacroFile(String name, String arg) { } if (IJ.debugMode) IJ.log("runMacro: "+path+" ("+name+")"); if (!exists || f==null) { - IJ.error("RunMacro", "Macro or script not found:\n \n"+path); - return null; + if (returnError){ + return "Macro or script not found:\n \n"+path; + } + else{ + IJ.error("RunMacro", "Macro or script not found:\n \n"+path); + return null; + } } filePath = path; try { @@ -146,8 +161,14 @@ else if (name.endsWith(".py")) return runMacro(macro, arg); } catch (Exception e) { - if (!Macro.MACRO_CANCELED.equals(e.getMessage())) - IJ.error(e.getMessage()); + if (!Macro.MACRO_CANCELED.equals(e.getMessage())){ + if (returnError){ + return e.getMessage(); + } + else{ + IJ.error(e.getMessage()); + } + } return null; } } @@ -187,7 +208,10 @@ public static String runMacroFromJar(String name, String arg) { ClassLoader pcl = IJ.getClassLoader(); InputStream is = pcl.getResourceAsStream(name); if (is==null) { - IJ.error("Macro Runner", "Unable to load \""+name+"\" from jar file"); + if (returnError) + return "Unable to load \""+name+"\" from jar file"; + else + IJ.error("Macro Runner", "Unable to load \""+name+"\" from jar file"); return null; } InputStreamReader isr = new InputStreamReader(is); @@ -199,7 +223,10 @@ public static String runMacroFromJar(String name, String arg) { macro = sb.toString(); is.close(); } catch (IOException e) { - IJ.error("Macro Runner", ""+e); + if (returnError) + return ""+e; + else + IJ.error("Macro Runner", ""+e); } if (macro!=null) return (new Macro_Runner()).runMacro(macro, arg);