git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270282 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -0,0 +1,55 @@ | |||
| /* | |||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||
| * | |||
| * This software is published under the terms of the Apache Software License | |||
| * version 1.1, a copy of which has been included with this distribution in | |||
| * the LICENSE.txt file. | |||
| */ | |||
| package org.apache.myrmidon.framework.exec.launchers; | |||
| import java.io.IOException; | |||
| import java.io.File; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| import org.apache.myrmidon.framework.exec.CommandLauncher; | |||
| import org.apache.myrmidon.framework.exec.ExecMetaData; | |||
| import org.apache.avalon.excalibur.io.FileUtil; | |||
| /** | |||
| * A command launcher that uses an auxiliary script to launch commands in | |||
| * directories other than the current working directory. | |||
| * | |||
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||
| * @author <a href="mailto:thomas.haas@softwired-inc.com">Thomas Haas</a> | |||
| * @version $Revision$ $Date$ | |||
| */ | |||
| public class PerlCommandLauncher | |||
| implements CommandLauncher | |||
| { | |||
| private String m_script; | |||
| public PerlCommandLauncher( final String script ) | |||
| { | |||
| m_script = script; | |||
| } | |||
| /** | |||
| * Launches the given command in a new process using cmd.exe to | |||
| * set the working directory. | |||
| */ | |||
| public Process exec( final ExecMetaData metaData ) | |||
| throws IOException, TaskException | |||
| { | |||
| final File homeDir = ExecUtil.getAntHomeDirectory(); | |||
| final String script = FileUtil.resolveFile( homeDir, m_script ).toString(); | |||
| // Build the command | |||
| final String[] prefix = new String[ 3 ]; | |||
| prefix[ 0 ] = "perl"; | |||
| prefix[ 1 ] = script; | |||
| prefix[ 2 ] = metaData.getWorkingDirectory().getCanonicalPath(); | |||
| final ExecMetaData newMetaData = ExecUtil.prepend( metaData, prefix ); | |||
| return Runtime.getRuntime(). | |||
| exec( newMetaData.getCommand(), newMetaData.getEnvironment() ); | |||
| } | |||
| } | |||
| @@ -0,0 +1,54 @@ | |||
| /* | |||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||
| * | |||
| * This software is published under the terms of the Apache Software License | |||
| * version 1.1, a copy of which has been included with this distribution in | |||
| * the LICENSE.txt file. | |||
| */ | |||
| package org.apache.myrmidon.framework.exec.launchers; | |||
| import java.io.IOException; | |||
| import java.io.File; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| import org.apache.myrmidon.framework.exec.CommandLauncher; | |||
| import org.apache.myrmidon.framework.exec.ExecMetaData; | |||
| import org.apache.avalon.excalibur.io.FileUtil; | |||
| /** | |||
| * A command launcher that uses an auxiliary script to launch commands in | |||
| * directories other than the current working directory. | |||
| * | |||
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> | |||
| * @author <a href="mailto:thomas.haas@softwired-inc.com">Thomas Haas</a> | |||
| * @version $Revision$ $Date$ | |||
| */ | |||
| public class ScriptCommandLauncher | |||
| implements CommandLauncher | |||
| { | |||
| private String m_script; | |||
| public ScriptCommandLauncher( final String script ) | |||
| { | |||
| m_script = script; | |||
| } | |||
| /** | |||
| * Launches the given command in a new process using cmd.exe to | |||
| * set the working directory. | |||
| */ | |||
| public Process exec( final ExecMetaData metaData ) | |||
| throws IOException, TaskException | |||
| { | |||
| final File homeDir = ExecUtil.getAntHomeDirectory(); | |||
| final String script = FileUtil.resolveFile( homeDir, m_script ).toString(); | |||
| // Build the command | |||
| final String[] prefix = new String[ 2 ]; | |||
| prefix[ 0 ] = script; | |||
| prefix[ 1 ] = metaData.getWorkingDirectory().getCanonicalPath(); | |||
| final ExecMetaData newMetaData = ExecUtil.prepend( metaData, prefix ); | |||
| return Runtime.getRuntime(). | |||
| exec( newMetaData.getCommand(), newMetaData.getEnvironment() ); | |||
| } | |||
| } | |||