package com.github.linsolas.casperjsrunner; import static com.github.linsolas.casperjsrunner.LogUtils.getLogger; import static com.github.linsolas.casperjsrunner.OSUtils.isWindows; import static com.github.linsolas.casperjsrunner.toolchain.CasperjsToolchain.KEY_CASPERJS_TYPE; import org.apache.maven.execution.MavenSession; import org.apache.maven.toolchain.Toolchain; import org.apache.maven.toolchain.ToolchainManager; public class CasperJsRuntimeFinder { public static String findCasperRuntime(final ToolchainManager toolchainManager, final MavenSession session, final String casperExecPath) { String result = null; getLogger().debug("Finding casperjs runtime ..."); getLogger().debug("Trying from toolchain"); final Toolchain tc = toolchainManager.getToolchainFromBuildContext(KEY_CASPERJS_TYPE, session); if (tc != null) { getLogger().debug("Toolchain in casperjs-plugin: " + tc); if (casperExecPath != null) { getLogger().warn( "Toolchains are ignored, 'casperRuntime' parameter is set to " + casperExecPath); result = casperExecPath; } else { getLogger().debug("Found from toolchain"); result = tc.findTool(KEY_CASPERJS_TYPE); } } if (result == null) { getLogger().debug("No toolchain found, falling back to parameter"); result = casperExecPath; } if (result == null) { String defaultCasperRuntime = "casperjs"; if (isWindows()) { defaultCasperRuntime = "casperjs.bat"; } getLogger().debug( "No parameter specified, falling back to default '" + defaultCasperRuntime + "'"); result = defaultCasperRuntime; } return result; } }