diff options
Diffstat (limited to 'support/arara/source/src/main/java/com/github/cereda/arara/utils/Methods.java')
-rw-r--r-- | support/arara/source/src/main/java/com/github/cereda/arara/utils/Methods.java | 1368 |
1 files changed, 0 insertions, 1368 deletions
diff --git a/support/arara/source/src/main/java/com/github/cereda/arara/utils/Methods.java b/support/arara/source/src/main/java/com/github/cereda/arara/utils/Methods.java deleted file mode 100644 index 24982dace9..0000000000 --- a/support/arara/source/src/main/java/com/github/cereda/arara/utils/Methods.java +++ /dev/null @@ -1,1368 +0,0 @@ -/** - * Arara, the cool TeX automation tool - * Copyright (c) 2012 -- 2019, Paulo Roberto Massa Cereda - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Neither the name of the project's author nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY - * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -package com.github.cereda.arara.utils; - -import com.github.cereda.arara.controller.ConfigurationController; -import com.github.cereda.arara.controller.LanguageController; -import com.github.cereda.arara.model.AraraException; -import com.github.cereda.arara.model.Command; -import com.github.cereda.arara.model.Messages; -import com.github.cereda.arara.model.Pair; -import com.github.cereda.arara.model.Session; -import com.github.cereda.arara.model.Trigger; -import java.io.File; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -/** - * Implements some auxiliary methods for runtime evaluation. - * @author Paulo Roberto Massa Cereda - * @version 4.0 - * @since 4.0 - */ -public class Methods { - - // the language controller - private static final LanguageController messages = - LanguageController.getInstance(); - - // the session controller - private static final Session session = new Session(); - - /** - * Adds the rule methods to the provided map. - * @param map The map. - */ - public static void addRuleMethods(Map<String, Object> map) { - addConditionalMethods(map); - try { - map.put("getOriginalFile", Methods.class.getMethod("getOriginalFile")); - map.put("getOriginalReference", Methods.class.getMethod("getOriginalReference")); - map.put("isEmpty", Methods.class.getMethod("isEmpty", String.class)); - map.put("isNotEmpty", Methods.class.getMethod("isNotEmpty", String.class)); - map.put("isEmpty", Methods.class.getMethod("isEmpty", String.class, Object.class)); - map.put("isNotEmpty", Methods.class.getMethod("isNotEmpty", String.class, Object.class)); - map.put("isEmpty", Methods.class.getMethod("isEmpty", String.class, Object.class, Object.class)); - map.put("isNotEmpty", Methods.class.getMethod("isNotEmpty", String.class, Object.class, Object.class)); - map.put("isTrue", Methods.class.getMethod("isTrue", String.class)); - map.put("isFalse", Methods.class.getMethod("isFalse", String.class)); - map.put("isTrue", Methods.class.getMethod("isTrue", String.class, Object.class)); - map.put("isFalse", Methods.class.getMethod("isFalse", String.class, Object.class)); - map.put("isTrue", Methods.class.getMethod("isTrue", String.class, Object.class, Object.class)); - map.put("isFalse", Methods.class.getMethod("isFalse", String.class, Object.class, Object.class)); - map.put("isTrue", Methods.class.getMethod("isTrue", String.class, Object.class, Object.class, Object.class)); - map.put("isFalse", Methods.class.getMethod("isFalse", String.class, Object.class, Object.class, Object.class)); - map.put("trimSpaces", Methods.class.getMethod("trimSpaces", String.class)); - map.put("isTrue", Methods.class.getMethod("isTrue", boolean.class, Object.class)); - map.put("isFalse", Methods.class.getMethod("isFalse", boolean.class, Object.class)); - map.put("isTrue", Methods.class.getMethod("isTrue", boolean.class, Object.class, Object.class)); - map.put("isFalse", Methods.class.getMethod("isFalse", boolean.class, Object.class, Object.class)); - map.put("getBasename", Methods.class.getMethod("getBasename", File.class)); - map.put("getBasename", Methods.class.getMethod("getBasename", String.class)); - map.put("getFullBasename", Methods.class.getMethod("getFullBasename", File.class)); - map.put("getFullBasename", Methods.class.getMethod("getFullBasename", String.class)); - map.put("getFiletype", Methods.class.getMethod("getFiletype", File.class)); - map.put("getFiletype", Methods.class.getMethod("getFiletype", String.class)); - map.put("throwError", Methods.class.getMethod("throwError", String.class)); - map.put("getSession", Methods.class.getMethod("getSession")); - map.put("isWindows", Methods.class.getMethod("isWindows")); - map.put("isLinux", Methods.class.getMethod("isLinux")); - map.put("isMac", Methods.class.getMethod("isMac")); - map.put("isUnix", Methods.class.getMethod("isUnix")); - map.put("isAIX", Methods.class.getMethod("isAIX")); - map.put("isIrix", Methods.class.getMethod("isIrix")); - map.put("isOS2", Methods.class.getMethod("isOS2")); - map.put("isSolaris", Methods.class.getMethod("isSolaris")); - map.put("isCygwin", Methods.class.getMethod("isCygwin")); - map.put("isWindows", Methods.class.getMethod("isWindows", Object.class, Object.class)); - map.put("isLinux", Methods.class.getMethod("isLinux", Object.class, Object.class)); - map.put("isMac", Methods.class.getMethod("isMac", Object.class, Object.class)); - map.put("isUnix", Methods.class.getMethod("isUnix", Object.class, Object.class)); - map.put("isAIX", Methods.class.getMethod("isAIX", Object.class, Object.class)); - map.put("isIrix", Methods.class.getMethod("isIrix", Object.class, Object.class)); - map.put("isOS2", Methods.class.getMethod("isOS2", Object.class, Object.class)); - map.put("isSolaris", Methods.class.getMethod("isSolaris", Object.class, Object.class)); - map.put("isCygwin", Methods.class.getMethod("isCygwin", Object.class, Object.class)); - map.put("replicatePattern", Methods.class.getMethod("replicatePattern", String.class, List.class)); - map.put("buildString", Methods.class.getMethod("buildString", Object[].class)); - map.put("addQuotes", Methods.class.getMethod("addQuotes", Object.class)); - map.put("getCommand", Methods.class.getMethod("getCommand", List.class)); - map.put("getCommand", Methods.class.getMethod("getCommand", Object[].class)); - map.put("getTrigger", Methods.class.getMethod("getTrigger", String.class)); - map.put("getTrigger", Methods.class.getMethod("getTrigger", String.class, Object[].class)); - map.put("checkClass", Methods.class.getMethod("checkClass", Class.class, Object.class)); - map.put("isString", Methods.class.getMethod("isString", Object.class)); - map.put("isList", Methods.class.getMethod("isList", Object.class)); - map.put("isMap", Methods.class.getMethod("isMap", Object.class)); - map.put("isBoolean", Methods.class.getMethod("isBoolean", Object.class)); - map.put("isVerboseMode", Methods.class.getMethod("isVerboseMode")); - map.put("showMessage", Methods.class.getMethod("showMessage", int.class, String.class, String.class)); - map.put("showMessage", Methods.class.getMethod("showMessage", int.class, int.class, String.class, String.class)); - map.put("isOnPath", Methods.class.getMethod("isOnPath", String.class)); - map.put("unsafelyExecuteSystemCommand", Methods.class.getMethod("unsafelyExecuteSystemCommand", Command.class)); - map.put("mergeVelocityTemplate", Methods.class.getMethod("mergeVelocityTemplate", File.class, File.class, Map.class)); - map.put("getCommandWithWorkingDirectory", Methods.class.getMethod("getCommandWithWorkingDirectory", String.class, List.class)); - map.put("getCommandWithWorkingDirectory", Methods.class.getMethod("getCommandWithWorkingDirectory", String.class, Object[].class)); - map.put("getCommandWithWorkingDirectory", Methods.class.getMethod("getCommandWithWorkingDirectory", File.class, List.class)); - map.put("getCommandWithWorkingDirectory", Methods.class.getMethod("getCommandWithWorkingDirectory", File.class, Object[].class)); - map.put("listFilesByExtensions", Methods.class.getMethod("listFilesByExtensions", File.class, List.class, boolean.class)); - map.put("listFilesByExtensions", Methods.class.getMethod("listFilesByExtensions", String.class, List.class, boolean.class)); - map.put("listFilesByPatterns", Methods.class.getMethod("listFilesByPatterns", File.class, List.class, boolean.class)); - map.put("listFilesByPatterns", Methods.class.getMethod("listFilesByPatterns", String.class, List.class, boolean.class)); - map.put("writeToFile", Methods.class.getMethod("writeToFile", File.class, String.class, boolean.class)); - map.put("writeToFile", Methods.class.getMethod("writeToFile", File.class, List.class, boolean.class)); - map.put("writeToFile", Methods.class.getMethod("writeToFile", String.class, String.class, boolean.class)); - map.put("writeToFile", Methods.class.getMethod("writeToFile", String.class, List.class, boolean.class)); - map.put("readFromFile", Methods.class.getMethod("readFromFile", File.class)); - map.put("readFromFile", Methods.class.getMethod("readFromFile", String.class)); - map.put("isSubdirectory", Methods.class.getMethod("isSubdirectory", File.class)); - } catch (Exception exception) { - // quack, quack, quack - } - } - - /** - * Adds conditional methods to the provided map. - * @param map The map. - */ - public static void addConditionalMethods(Map<String, Object> map) { - try { - map.put("exists", Methods.class.getMethod("exists", String.class)); - map.put("exists", Methods.class.getMethod("exists", File.class)); - map.put("missing", Methods.class.getMethod("missing", String.class)); - map.put("missing", Methods.class.getMethod("missing", File.class)); - map.put("changed", Methods.class.getMethod("changed", String.class)); - map.put("changed", Methods.class.getMethod("changed", File.class)); - map.put("unchanged", Methods.class.getMethod("unchanged", String.class)); - map.put("unchanged", Methods.class.getMethod("unchanged", File.class)); - map.put("found", Methods.class.getMethod("found", String.class, String.class)); - map.put("found", Methods.class.getMethod("found", File.class, String.class)); - map.put("toFile", Methods.class.getMethod("toFile", String.class)); - map.put("showDropdown", Methods.class.getMethod("showDropdown", int.class, String.class, String.class, Object[].class)); - map.put("showDropdown", Methods.class.getMethod("showDropdown", int.class, int.class, String.class, String.class, Object[].class)); - map.put("showInput", Methods.class.getMethod("showInput", int.class, String.class, String.class)); - map.put("showInput", Methods.class.getMethod("showInput", int.class, int.class, String.class, String.class)); - map.put("showOptions", Methods.class.getMethod("showOptions", int.class, String.class, String.class, Object[].class)); - map.put("showOptions", Methods.class.getMethod("showOptions", int.class, int.class, String.class, String.class, Object[].class)); - map.put("currentFile", Methods.class.getMethod("currentFile")); - map.put("loadClass", Methods.class.getMethod("loadClass", File.class, String.class)); - map.put("loadClass", Methods.class.getMethod("loadClass", String.class, String.class)); - map.put("loadObject", Methods.class.getMethod("loadObject", File.class, String.class)); - map.put("loadObject", Methods.class.getMethod("loadObject", String.class, String.class)); - } catch (Exception exception) { - // quack, quack, quack - } - } - - /** - * Gets the original file. - * @return The original file. - */ - public static String getOriginalFile() { - File file = (File) ConfigurationController.getInstance().get("execution.reference"); - return file.getName(); - } - - /** - * Gets the original reference. - * @return The original reference. - */ - public static File getOriginalReference() { - return (File) ConfigurationController.getInstance().get("execution.reference"); - } - - /** - * Checks if the string is empty. - * @param string The string. - * @return A boolean value. - */ - public static boolean isEmpty(String string) { - return CommonUtils.checkEmptyString(string); - } - - /** - * Checks if the string is not empty. - * @param string The string. - * @return A boolean value. - */ - public static boolean isNotEmpty(String string) { - return !isEmpty(string); - } - - /** - * Checks if the string is empty. - * @param string The string. - * @param yes Object to return if true. - * @return An object or empty string. - */ - public static Object isEmpty(String string, Object yes) { - return isEmpty(string) ? yes : ""; - } - - /** - * Checks if the string is not empty. - * @param string The string. - * @param yes Object to return if true. - * @return An object or empty string. - */ - public static Object isNotEmpty(String string, Object yes) { - return isNotEmpty(string) ? yes : ""; - } - - /** - * Checks if the string is empty. - * @param string The string. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - */ - public static Object isEmpty(String string, Object yes, Object no) { - return isEmpty(string) ? yes : no; - } - - /** - * Checks if the string is not empty. - * @param string The string. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - */ - public static Object isNotEmpty(String string, Object yes, Object no) { - return isNotEmpty(string) ? yes : no; - } - - /** - * Checks if the string holds a true value. - * @param string The string. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean isTrue(String string) throws AraraException { - return isEmpty(string) ? false : CommonUtils.checkBoolean(string); - } - - /** - * Checks if the string holds a false value. - * @param string The string. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean isFalse(String string) throws AraraException { - return isEmpty(string) ? false : !CommonUtils.checkBoolean(string); - } - - /** - * Checks if the string holds a true value. - * @param string The string. - * @param yes Object to return if true. - * @return An object or an empty string. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isTrue(String string, Object yes) - throws AraraException { - return isTrue(string) ? yes : ""; - } - - /** - * Checks if the string holds a false value. - * @param string The string. - * @param yes Object to return if true. - * @return An object or an empty string. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isFalse(String string, Object yes) - throws AraraException { - return (isFalse(string) ? yes : ""); - } - - /** - * Checks if the string holds a true value. - * @param string The string. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isTrue(String string, Object yes, Object no) - throws AraraException { - return (isTrue(string) ? yes : no); - } - - /** - * Checks if the string holds a false value. - * @param string The string. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isFalse(String string, Object yes, Object no) - throws AraraException { - return (isFalse(string) ? yes : no); - } - - /** - * Checks if the string holds a true value. - * @param string The string. - * @param yes Object to return if true. - * @param no Object to return if false. - * @param fallback Object to return if string is empty. - * @return One of the three options. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isTrue(String string, Object yes, Object no, - Object fallback) throws AraraException { - return isEmpty(string) ? fallback : (isTrue(string) ? yes : no); - } - - /** - * Checks if the string holds a false value. - * @param string The string. - * @param yes Object to return if true. - * @param no Object to return if false. - * @param fallback Object to return if string is empty. - * @return One of the three options. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isFalse(String string, Object yes, Object no, - Object fallback) throws AraraException { - return isEmpty(string) ? fallback : (isFalse(string) ? yes : no); - } - - /** - * Trim spaces from the string. - * @param string The string. - * @return A trimmed string. - */ - public static String trimSpaces(String string) { - return string.trim(); - } - - /** - * Checks if the expression resolves to true. - * @param value The expression. - * @param yes Object to return if true. - * @return An object or an empty string. - */ - public static Object isTrue(boolean value, Object yes) { - return value ? yes : ""; - } - - /** - * Checks if the expression resolves to false. - * @param value The expression. - * @param yes Object to return if true. - * @return An object or an empty string. - */ - public static Object isFalse(boolean value, Object yes) { - return !value ? yes : ""; - } - - /** - * Checks if the expression resolves to true. - * @param value The expression. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - */ - public static Object isTrue(boolean value, Object yes, Object no) { - return value ? yes : no; - } - - /** - * Checks if the expression resolves to false. - * @param value The expression. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - */ - public static Object isFalse(boolean value, Object yes, Object no) { - return !value ? yes : no; - } - - /** - * Gets the basename. - * @param file The file. - * @return The basename of the provided file. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static String getBasename(File file) throws AraraException { - if (file.isFile()) { - return CommonUtils.getBasename(file); - } else { - throw new AraraException( - CommonUtils.getRuleErrorHeader().concat( - messages.getMessage( - Messages.ERROR_BASENAME_NOT_A_FILE, - file.getName() - ) - ) - ); - } - } - - /** - * Gets the basename. - * @param filename The string. - * @return The basename. - */ - public static String getBasename(String filename) { - return CommonUtils.getBasename(filename); - } - - /** - * Gets the file type. - * @param file The provided file. - * @return The file type. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static String getFiletype(File file) throws AraraException { - if (file.isFile()) { - return CommonUtils.getFiletype(file); - } else { - throw new AraraException( - CommonUtils.getRuleErrorHeader().concat( - messages.getMessage( - Messages.ERROR_FILETYPE_NOT_A_FILE, - file.getName() - ) - ) - ); - } - } - - /** - * Gets the file type. - * @param filename The provided string. - * @return The file type. - */ - public static String getFiletype(String filename) { - return CommonUtils.getFiletype(filename); - } - - /** - * Replicates the pattern to each element of a list. - * @param pattern The pattern. - * @param values The list. - * @return A list of strings containing the pattern applied to the list. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static List<Object> replicatePattern(String pattern, - List<Object> values) throws AraraException { - return CommonUtils.replicateList(pattern, values); - } - - /** - * Throws an exception. - * @param text The text to be thrown as the exception message. - * @throws AraraException The exception to be thrown by this method. - */ - public static void throwError(String text) throws AraraException { - throw new AraraException(text); - } - - /** - * Gets the session. - * @return The session. - */ - public static Session getSession() { - return session; - } - - /** - * Checks if Windows is the underlying operating system. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean isWindows() throws AraraException { - return CommonUtils.checkOS("windows"); - } - - /** - * Checks if we are inside a Cygwin environment. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean isCygwin() throws AraraException { - return CommonUtils.checkOS("cygwin"); - } - - /** - * Checks if Linux is the underlying operating system. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean isLinux() throws AraraException { - return CommonUtils.checkOS("linux"); - } - - /** - * Checks if Mac is the underlying operating system. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean isMac() throws AraraException { - return CommonUtils.checkOS("mac"); - } - - /** - * Checks if Unix is the underlying operating system. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean isUnix() throws AraraException { - return CommonUtils.checkOS("unix"); - } - - /** - * Checks if AIX is the underlying operating system. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean isAIX() throws AraraException { - return CommonUtils.checkOS("aix"); - } - - /** - * Checks if Irix is the underlying operating system. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean isIrix() throws AraraException { - return CommonUtils.checkOS("irix"); - } - - /** - * Checks if OS2 is the underlying operating system. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean isOS2() throws AraraException { - return CommonUtils.checkOS("os2"); - } - - /** - * Checks if Solaris is the underlying operating system. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean isSolaris() throws AraraException { - return CommonUtils.checkOS("solaris"); - } - - /** - * Checks if Windows is the underlying operating system. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isWindows(Object yes, Object no) - throws AraraException { - return CommonUtils.checkOS("windows") ? yes : no; - } - - /** - * Checks if we are inside a Cygwin environment. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isCygwin(Object yes, Object no) throws AraraException { - return CommonUtils.checkOS("cygwin") ? yes : no; - } - - /** - * Checks if Linux is the underlying operating system. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isLinux(Object yes, Object no) throws AraraException { - return CommonUtils.checkOS("linux") ? yes : no; - } - - /** - * Checks if Mac is the underlying operating system. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isMac(Object yes, Object no) throws AraraException { - return CommonUtils.checkOS("mac") ? yes : no; - } - - /** - * Checks if Unix is the underlying operating system. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isUnix(Object yes, Object no) throws AraraException { - return CommonUtils.checkOS("unix") ? yes : no; - } - - /** - * Checks if AIX is the underlying operating system. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isAIX(Object yes, Object no) throws AraraException { - return CommonUtils.checkOS("aix") ? yes : no; - } - - /** - * Checks if Irix is the underlying operating system. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isIrix(Object yes, Object no) throws AraraException { - return CommonUtils.checkOS("irix") ? yes : no; - } - - /** - * Checks if OS2 is the underlying operating system. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isOS2(Object yes, Object no) throws AraraException { - return CommonUtils.checkOS("os2") ? yes : no; - } - - /** - * Checks if Solaris is the underlying operating system. - * @param yes Object to return if true. - * @param no Object to return if false. - * @return One of the two objects. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static Object isSolaris(Object yes, Object no) throws AraraException { - return CommonUtils.checkOS("solaris") ? yes : no; - } - - /** - * Checks if the file exists according to its extension. - * @param extension The extension. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean exists(String extension) throws AraraException { - return CommonUtils.exists(extension); - } - - /** - * Checks if the file is missing according to its extension. - * @param extension The extension. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean missing(String extension) throws AraraException { - return !exists(extension); - } - - /** - * Checks if the file has changed, according to its extension. - * @param extension The extension. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean changed(String extension) throws AraraException { - return CommonUtils.hasChanged(extension); - } - - /** - * Checks if the file is unchanged according to its extension. - * @param extension The extension. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean unchanged(String extension) throws AraraException { - return !changed(extension); - } - - /** - * Checks if the file exists. - * @param filename The file. - * @return A boolean value. - */ - public static boolean exists(File filename) { - return CommonUtils.exists(filename); - } - - /** - * Checks if the file is missing. - * @param filename The file. - * @return A boolean value. - */ - public static boolean missing(File filename) { - return !exists(filename); - } - - /** - * Checks if the file has changed. - * @param filename The file. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean changed(File filename) throws AraraException { - return CommonUtils.hasChanged(filename); - } - - /** - * Checks if the file is unchanged. - * @param filename The file. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean unchanged(File filename) throws AraraException { - return !changed(filename); - } - - /** - * Build a string based on an array of objects. - * @param objects Array of objects. - * @return A string built from the array. - */ - public static String buildString(Object... objects) { - return CommonUtils.generateString(objects); - } - - /** - * Encloses the provided object into double quotes. - * @param object The object. - * @return The object enclosed in double quotes. - */ - public static String addQuotes(Object object) { - return CommonUtils.addQuotes(object); - } - - /** - * Checks if the file contains the regex, based on its extension. - * @param extension The extension. - * @param regex The regex. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean found(String extension, String regex) - throws AraraException { - return CommonUtils.checkRegex(extension, regex); - } - - /** - * Checks if the file contains the provided regex. - * @param file The file. - * @param regex The regex. - * @return A boolean value. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static boolean found(File file, String regex) - throws AraraException { - return CommonUtils.checkRegex(file, regex); - } - - /** - * Gets the command based on a list of strings. - * @param elements The list of strings. - * @return A command. - */ - public static Command getCommand(List<String> elements) { - return new Command(elements); - } - - /** - * Gets the command based on an array of objects. - * @param elements Array of objects. - * @return A command. - */ - public static Command getCommand(Object... elements) { - return new Command(elements); - } - - /** - * Gets the command based on an array of objects and with the provided - * working directory as string. - * @param path String path representing the working directory. - * @param elements Array of elements. - * @return A command. - */ - public static Command getCommandWithWorkingDirectory(String path, - Object... elements) { - Command command = new Command(elements); - command.setWorkingDirectory(new File(path)); - return command; - } - - /** - * Gets the command based on an array of objects and with the provided - * working directory as file. - * @param file File representing the working directory. - * @param elements Array of elements. - * @return A command. - */ - public static Command getCommandWithWorkingDirectory(File file, - Object... elements) { - Command command = new Command(elements); - command.setWorkingDirectory(file); - return command; - } - - /** - * Gets the command based on a list of strings and with the provided - * working directory as string. - * @param path String path representing the working directory. - * @param elements List of strings. - * @return A command. - */ - public static Command getCommandWithWorkingDirectory(String path, - List<String> elements) { - Command command = new Command(elements); - command.setWorkingDirectory(new File(path)); - return command; - } - - /** - * Gets the command based on a list of strings and with the provided - * working directory as file. - * @param file File representing the working directory. - * @param elements List of strings. - * @return A command. - */ - public static Command getCommandWithWorkingDirectory(File file, - List<String> elements) { - Command command = new Command(elements); - command.setWorkingDirectory(file); - return command; - } - - /** - * Gets the trigger. - * @param action The action name. - * @return The trigger. - */ - public static Trigger getTrigger(String action) { - return new Trigger(action, null); - } - - /** - * Gets the trigger. - * @param action The action name. - * @param parameters The trigger parameters. - * @return A trigger. - */ - public static Trigger getTrigger(String action, Object... parameters) { - return new Trigger(action, Arrays.asList(parameters)); - } - - /** - * Checks if the object is an intance of the provided class. - * @param clazz The class. - * @param object The object. - * @return A boolean value. - */ - public static boolean checkClass(Class clazz, Object object) { - return CommonUtils.checkClass(clazz, object); - } - - /** - * Checks if the object is a string. - * @param object The object. - * @return A boolean value. - */ - public static boolean isString(Object object) { - return checkClass(String.class, object); - } - - /** - * Checks if the object is a list. - * @param object The object. - * @return A boolean value. - */ - public static boolean isList(Object object) { - return checkClass(List.class, object); - } - - /** - * Checks if the object is a map. - * @param object The object. - * @return A boolean value. - */ - public static boolean isMap(Object object) { - return checkClass(Map.class, object); - } - - /** - * Checks if the object is a boolean. - * @param object The object. - * @return A boolean value. - */ - public static boolean isBoolean(Object object) { - return checkClass(Boolean.class, object); - } - - /** - * Checks if the execution is in verbose mode. - * @return A boolean value indicating if the execution is in verbose mode. - */ - public static boolean isVerboseMode() { - return (Boolean) ConfigurationController. - getInstance().get("execution.verbose"); - } - - /** - * Returns a file object based on the provided name. - * @param name The file name. - * @return A file object. - */ - public static File toFile(String name) { - return new File(name); - } - - /** - * Shows the message. - * @param width Integer value, in pixels. - * @param type Type of message. - * @param title Title of the message. - * @param text Text of the message. - */ - public static void showMessage(int width, int type, - String title, String text) { - MessageUtils.showMessage(width, type, title, text); - } - - /** - * Shows the message. It relies on the default width. - * @param type Type of message. - * @param title Title of the message. - * @param text Text of the message. - */ - public static void showMessage(int type, String title, String text) { - MessageUtils.showMessage(type, title, text); - } - - /** - * Shows a message with options presented as an array of buttons. - * @param width Integer value, in pixels. - * @param type Type of message. - * @param title Title of the message. - * @param text Text of the message. - * @param buttons An array of objects to be presented as buttons. - * @return The index of the selected button, starting from 1. - */ - public static int showOptions(int width, int type, String title, - String text, Object... buttons) { - return MessageUtils.showOptions(width, type, title, text, buttons); - } - - /** - * Shows a message with options presented as an array of buttons. It relies - * on the default width. - * @param type Type of message. - * @param title Title of the message. - * @param text Text of the message. - * @param buttons An array of objects to be presented as buttons. - * @return The index of the selected button, starting from 1. - */ - public static int showOptions(int type, String title, - String text, Object... buttons) { - return MessageUtils.showOptions(type, title, text, buttons); - } - - /** - * Shows a message with a text input. - * @param width Integer value, in pixels. - * @param type Type of message. - * @param title Title of the message. - * @param text Text of the message. - * @return The string representing the input text. - */ - public static String showInput(int width, int type, - String title, String text) { - return MessageUtils.showInput(width, type, title, text); - } - - /** - * Shows a message with a text input. It relies on the default width. - * @param type Type of message. - * @param title Title of the message. - * @param text Text of the message. - * @return The string representing the input text. - */ - public static String showInput(int type, String title, String text) { - return MessageUtils.showInput(type, title, text); - } - - /** - * Shows a message with options presented as a dropdown list of elements. - * @param width Integer value, in pixels. - * @param type Type of message. - * @param title Title of the message. - * @param text Text of the message. - * @param elements An array of objects representing the elements. - * @return The index of the selected element, starting from 1. - */ - public static int showDropdown(int width, int type, String title, - String text, Object... elements) { - return MessageUtils.showDropdown(width, type, title, text, elements); - } - - /** - * Shows a message with options presented as a dropdown list of elements. It - * relies on the default width. - * @param type Type of message. - * @param title Title of the message. - * @param text Text of the message. - * @param elements An array of objects representing the elements. - * @return The index of the selected element, starting from 1. - */ - public static int showDropdown(int type, String title, - String text, Object... elements) { - return MessageUtils.showDropdown(type, title, text, elements); - } - - /** - * Checks if the provided command name is reachable from the system path. - * @param command A string representing the command. - * @return A logic value. - */ - public static boolean isOnPath(String command) { - return CommonUtils.isOnPath(command); - } - - /** - * Gets the full basename. - * @param file The file. - * @return The full basename of the provided file. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static String getFullBasename(File file) throws AraraException { - if (file.isFile()) { - return CommonUtils.getFullBasename(file); - } else { - throw new AraraException( - CommonUtils.getRuleErrorHeader().concat( - messages.getMessage( - Messages.ERROR_BASENAME_NOT_A_FILE, - file.getName() - ) - ) - ); - } - } - - /** - * Gets the full basename. - * @param name The string. - * @return The full basename. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static String getFullBasename(String name) throws AraraException { - return getFullBasename(new File(name)); - } - - /** - * Unsafely executes a system command from the underlying operating system - * and returns a pair containing the exit status and the command output as a - * string. - * @param command The system command to be executed. - * @return A pair containing the exit status and the system command output - * as a string. - */ - public static Pair<Integer, String> - unsafelyExecuteSystemCommand(Command command) { - return UnsafeUtils.executeSystemCommand(command); - } - - /** - * Merges the provided template with a context map and writes the result in - * an output file. This method relies on Apache Velocity. - * @param input The input file. - * @param output The output file. - * @param map The context map. - * @throws AraraException Something wrong happened, to be caught in the - * higher levels. - */ - public static void mergeVelocityTemplate(File input, File output, - Map<String, Object> map) throws AraraException { - VelocityUtils.mergeVelocityTemplate(input, output, map); - } - - /** - * Gets the file reference for the current directive. It is important to - * observe that version 4.0 of arara replicates the directive when 'files' - * is detected amongst the parameters, so each instance will have a - * different reference. - * @return A file reference for the current directive. - */ - public static File currentFile() { - return (File) ConfigurationController.getInstance(). - get("execution.directive.reference"); - } - - /** - * Loads a class from the provided file, potentially a Java archive. - * @param file File containing the Java bytecode (namely, a JAR). - * @param name The canonical name of the class. - * @return A pair representing the status and the class. - */ - public static Pair<Integer, Class> loadClass(File file, String name) { - return ClassLoadingUtils.loadClass(file, name); - } - - /** - * Loads a class from the provided string reference, representing a file. - * @param ref String reference representing a file. - * @param name The canonical name of the class. - * @return A pair representing the status and the class. - */ - public static Pair<Integer, Class> loadClass(String ref, String name) { - return ClassLoadingUtils.loadClass(new File(ref), name); - } - - /** - * Loads a class from the provided file, instantiating it. - * @param file File containing the Java bytecode (namely, a JAR). - * @param name The canonical name of the class. - * @return A pair representing the status and the class object. - */ - public static Pair<Integer, Object> loadObject(File file, String name) { - return ClassLoadingUtils.loadObject(file, name); - } - - /** - * Loads a class from the provided string reference, instantiating it. - * @param ref String reference representing a file. - * @param name The canonical name of the class. - * @return A pair representing the status and the class object. - */ - public static Pair<Integer, Object> loadObject(String ref, String name) { - return ClassLoadingUtils.loadObject(new File(ref), name); - } - - /** - * List all files from the provided directory according to the list of - * extensions. The leading dot must be omitted, unless it is part of the - * extension. - * @param directory The provided directory. - * @param extensions The list of extensions. - * @param recursive A flag indicating whether the search is recursive. - * @return A list of files. - */ - public static List<File> listFilesByExtensions(File directory, - List<String> extensions, boolean recursive) { - return FileSearchingUtils.listFilesByExtensions( - directory, - extensions, - recursive - ); - } - - /** - * List all files from the provided string path according to the list of - * extensions. The leading dot must be omitted, unless it is part of the - * extension. - * @param path The provided path as plain string. - * @param extensions The list of extensions. - * @param recursive A flag indicating whether the search is recursive. - * @return A list of files. - */ - public static List<File> listFilesByExtensions(String path, - List<String> extensions, boolean recursive) { - return FileSearchingUtils.listFilesByExtensions( - new File(path), - extensions, - recursive - ); - } - - /** - * List all files from the provided directory matching the list of file - * name patterns. Such list can contain wildcards. - * @param directory The provided directory. - * @param patterns The list of file name patterns. - * @param recursive A flag indicating whether the search is recursive. - * @return A list of files. - */ - public static List<File> listFilesByPatterns(File directory, - List<String> patterns, boolean recursive) { - return FileSearchingUtils.listFilesByPatterns( - directory, - patterns, - recursive - ); - } - - /** - * List all files from the provided path matching the list of file - * name patterns. Such list can contain wildcards. - * @param path The provided path as plain string. - * @param patterns The list of file name patterns. - * @param recursive A flag indicating whether the search is recursive. - * @return A list of files. - */ - public static List<File> listFilesByPatterns(String path, - List<String> patterns, boolean recursive) { - return FileSearchingUtils.listFilesByPatterns( - new File(path), - patterns, - recursive - ); - } - - /** - * Writes the string to a file, using UTF-8 as default encoding. - * @param file The file. - * @param text The string to be written. - * @param append A flag whether to append the content. - * @return A logical value indicating whether it was successful. - */ - public static boolean writeToFile(File file, String text, boolean append) { - return FileHandlingUtils.writeToFile(file, text, append); - } - - /** - * Writes the string to a file, using UTF-8 as default encoding. - * @param path The path. - * @param text The string to be written. - * @param append A flag whether to append the content. - * @return A logical value indicating whether it was successful. - */ - public static boolean writeToFile(String path, String text, - boolean append) { - return FileHandlingUtils.writeToFile(new File(path), text, append); - } - - /** - * Writes the string list to a file, using UTF-8 as default encoding. - * @param file The file. - * @param lines The string list to be written. - * @param append A flag whether to append the content. - * @return A logical value indicating whether it was successful. - */ - public static boolean writeToFile(File file, List<String> lines, - boolean append) { - return FileHandlingUtils.writeToFile(file, lines, append); - } - - /** - * Writes the string list to a file, using UTF-8 as default encoding. - * @param path The path. - * @param lines The string list to be written. - * @param append A flag whether to append the content. - * @return A logical value indicating whether it was successful. - */ - public static boolean writeToFile(String path, List<String> lines, - boolean append) { - return FileHandlingUtils.writeToFile(new File(path), lines, append); - } - - /** - * Reads the provided file into a list of strings. - * @param file The file. - * @return A list of strings. - */ - public static List<String> readFromFile(File file) { - return FileHandlingUtils.readFromFile(file); - } - - /** - * Reads the provided file into a list of strings. - * @param path The path. - * @return A list of strings. - */ - public static List<String> readFromFile(String path) { - return FileHandlingUtils.readFromFile(new File(path)); - } - - /** - * Checks whether a directory is under the project directory. - * @param directory The directory to be inspected. - * @return Logical value indicating whether the directoy is under root. - * @throws AraraException There was a problem with path retrieval. - */ - public static boolean isSubdirectory(File directory) - throws AraraException { - return CommonUtils.isSubDirectory(directory, getOriginalReference()); - } - -} |