diff --git a/docs/index.html b/docs/index.html index 20e4dff66..05b7ef2c7 100644 --- a/docs/index.html +++ b/docs/index.html @@ -23,7 +23,7 @@
  • Sam Ruby (rubys@us.ibm.com)
  • -

    Version 1.0.8.2 - 2000/07/12

    +

    Version 1.0.8.2 - 2000/07/14


    Table of Contents

    @@ -3311,6 +3311,7 @@ Reserved.

  • NetRexxC
  • RenameExtensions
  • Script
  • +
  • VssGet

  • NetRexxC

    @@ -3686,7 +3687,65 @@ from the script.

    None yet available

    - +
    +

    VssGet

    +

    Description:

    +Task to perform GET commands to Microsoft Visual Source Safe. +

    +The following attributes are interpretted: +

    Parameters:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AttributeValuesRequired
    loginusername,passwordNo
    vsspathSourceSafe pathYes
    localpathOverride the working directory and get to the specified pathNo
    writabletrue or falseNo
    recursivetrue or falseNo
    versiona version number to getNo
    datea date stamp to get atNo
    labela label to get forNo
    +

    Note that only one of version, date or label should be specified

    +

    Examples

    +
    +

    None yet available

    +
    diff --git a/src/main/org/apache/tools/ant/taskdefs/defaults.properties b/src/main/org/apache/tools/ant/taskdefs/defaults.properties index ad7aa7f69..368eb606d 100644 --- a/src/main/org/apache/tools/ant/taskdefs/defaults.properties +++ b/src/main/org/apache/tools/ant/taskdefs/defaults.properties @@ -45,6 +45,7 @@ ejbc=org.apache.tools.ant.taskdefs.optional.ejb.Ejbc ddcreator=org.apache.tools.ant.taskdefs.optional.ejb.DDCreator wlrun=org.apache.tools.ant.taskdefs.optional.ejb.WLRun wlstop=org.apache.tools.ant.taskdefs.optional.ejb.WLStop +vssget=org.apache.tools.ant.taskdefs.optional.vss.MSVSSGET # deprecated ant tasks (kept for back compatibility) javadoc2=org.apache.tools.ant.taskdefs.Javadoc diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java new file mode 100644 index 000000000..9d9490784 --- /dev/null +++ b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSS.java @@ -0,0 +1,173 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2000 The Apache Software Foundation. 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. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 APACHE SOFTWARE FOUNDATION OR + * ITS 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. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ + +package org.apache.tools.ant.taskdefs.optional.vss; + +import org.apache.tools.ant.*; +import org.apache.tools.ant.taskdefs.Exec; + +import java.io.File; + +/** + * A base class for creating tasks for executing commands on Visual SourceSafe. + *

    + * The class extends the 'exec' task as it operates by executing the ss.exe program + * supplied with SourceSafe. You will need to have ss.exe in your PATH to use this + * task. + *

    + *

    + * This class provides set and get methods for 'login' and 'vsspath' attributes. It + * also contains constants for the flags that can be passed to SS. + *

    + * + * @author Craig Cottingham + * @author Andrew Everitt + */ +public abstract class MSVSS extends Exec { + + private String m_vssLogin = null; + private String m_vssPath = null; + + /** + * Set the login to use when accessing vss. + *

    + * Should be formatted as username,password + * + * @param login the login string to use + */ + public final void setLogin(String login) { + m_vssLogin = login; + } + + /** + * @return the appropriate login command if the 'login' attribute was specified, otherwise an empty string + */ + public String getLoginCommand() { + if ( m_vssLogin == null ) { + return ""; + } else { + return new String(" " + FLAG_LOGIN + m_vssLogin); + } + } + + /** + * Set the path to the item in vss to operate on + *

    + * Ant can't cope with a '$' sign in an attribute so we have to add it here. + * Also we strip off any 'vss://' prefix which is an XMS special and should probably be removed! + * + * @param vssPath + */ + public final void setVsspath(String vssPath) { + if ( vssPath.startsWith("vss://") ) { + m_vssPath= PROJECT_PREFIX + vssPath.substring(5); + } else { + m_vssPath = PROJECT_PREFIX + vssPath; + } + } + + /** + * @return m_vssPath + */ + public String getVsspath() { + return new String(" " + m_vssPath); + } + + + /** + * Constant for the thing to execute + */ + public static final String SS_EXE = "ss"; + /** */ + public static final String PROJECT_PREFIX = "$"; + + /** + * The 'Get' command + */ + public static final String COMMAND_GET = "Get"; + /** + * The 'Checkout' command + */ + public static final String COMMAND_CHECKOUT = "Checkout"; + /** + * The 'Label' command + */ + public static final String COMMAND_LABEL = "Label"; + /** + * The 'History' command + */ + public static final String COMMAND_HISTORY = "History"; + + /** */ + public static final String FLAG_LOGIN = "-Y"; + /** */ + public static final String FLAG_OVERRIDE_WORKING_DIR = "-GL"; + /** */ + public static final String FLAG_AUTORESPONSE = "-I"; + /** */ + public static final String FLAG_RECURSION = "-R"; + /** */ + public static final String FLAG_VERSION = "-V"; + /** */ + public static final String FLAG_VERSION_DATE = "-Vd"; + /** */ + public static final String FLAG_VERSION_LABEL = "-VL"; + /** */ + public static final String FLAG_WRITABLE = "-W"; + /** */ + public static final String VALUE_NO = "-N"; + /** */ + public static final String VALUE_YES = "-Y"; +} + diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSGET.java b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSGET.java new file mode 100644 index 000000000..816b547ca --- /dev/null +++ b/src/main/org/apache/tools/ant/taskdefs/optional/vss/MSVSSGET.java @@ -0,0 +1,309 @@ +/* + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2000 The Apache Software Foundation. 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. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 APACHE SOFTWARE FOUNDATION OR + * ITS 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. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ + +package org.apache.tools.ant.taskdefs.optional.vss; + +import org.apache.tools.ant.*; + +import java.io.File; + +/** + * Task to perform GET commands to Microsoft Visual Source Safe. + *

    + * The following attributes are interpretted: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    AttributeValuesRequired
    loginusername,passwordNo
    vsspathSourceSafe pathYes
    localpathOverride the working directory and get to the specified pathNo
    writabletrue or falseNo
    recursivetrue or falseNo
    versiona version number to getNo
    datea date stamp to get atNo
    labela label to get forNo
    + *

    Note that only one of version, date or label should be specified

    + * + * @author Craig Cottingham + * @author Andrew Everitt + */ +public class MSVSSGET extends MSVSS { + + private String m_LocalPath = null; + private boolean m_Recursive = false; + private boolean m_Writable = false; + private String m_Version = null; + private String m_Date = null; + private String m_Label = null; + + /** + * Executes the task. + *

    + * Builds a command line to execute ss and then calls Exec's run method + * to execute the command line. + */ + public void execute() throws BuildException { + StringBuffer commandLine = new StringBuffer(); + int result = 0; + + // first off, make sure that we've got a command and a vssdir ... + if (getVsspath() == null) { + String msg = "vsspath attribute must be set!"; + throw new BuildException(msg); + } + + // now look for illegal combinations of things ... + + // build the command line from what we got the format is + // ss Get VSS items [-G] [-H] [-I-] [-N] [-O] [-R] [-V] [-W] [-Y] [-?] + // as specified in the SS.EXE help + commandLine.append(SS_EXE).append(' ').append(COMMAND_GET); + + // VSS items + commandLine.append(getVsspath()); + // -GL + commandLine.append(getLocalpathCommand()); + // -I- + commandLine.append(" -I-"); // ignore all errors + // -R + commandLine.append(getRecursiveCommand()); + // -V + commandLine.append(getVersionCommand()); + // -W + commandLine.append(getWritableCommand()); + // -Y + commandLine.append(getLoginCommand()); + + result = run(commandLine.toString()); + if ( result != 0 ) { + String msg = "Failed executing: " + commandLine.toString(); + throw new BuildException(msg); + } + } + + /** + * Set the local path. + */ + public void setLocalpath(String localPath) { + m_LocalPath = project.translatePath(localPath); + } + + /** + * Builds and returns the -GL flag command if required + *

    + * The localpath is created if it didn't exist + */ + public String getLocalpathCommand() { + if (m_LocalPath == null) { + return ""; + } else { + // make sure m_LocalDir exists, create it if it doesn't + File dir = project.resolveFile(m_LocalPath); + if (!dir.exists()) { + boolean done = dir.mkdirs(); + if (done == false) { + String msg = "Directory " + m_LocalPath + " creation was not " + + "succesful for an unknown reason"; + throw new BuildException(msg); + } + project.log("Created dir: " + dir.getAbsolutePath()); + } + + return new String(" " + FLAG_OVERRIDE_WORKING_DIR + m_LocalPath); + } + } + + /** + * Set behaviour recursive or non-recursive + */ + public void setRecursive(String recursive) { + m_Recursive = Project.toBoolean(recursive); + } + + /** + * @return the 'recursive' command if the attribute was 'true', otherwise an empty string + */ + public String getRecursiveCommand() { + if ( !m_Recursive ) { + return ""; + } else { + return new String(" " + FLAG_RECURSION); + } + } + + /** + * Set behaviour, used in get command to make files that are 'got' writable + */ + public final void setWritable(String argWritable) { + m_Writable = Project.toBoolean(argWritable); + } + + /** + * @return the 'make writable' command if the attribute was 'true', otherwise an empty string + */ + public String getWritableCommand() { + if ( !m_Writable ) { + return ""; + } else { + return new String(" " + FLAG_WRITABLE); + } + } + + /** + * Set the stored version string + *

    + * Note we assume that if the supplied string has the value "null" that something + * went wrong and that the string value got populated from a null object. This + * happens if a ant variable is used e.g. version="${ver_server}" when ver_server + * has not been defined to ant! + */ + public void setVersion(String version) { + if (version.equals("") || version.equals("null") ) { + m_Version = null; + } else { + m_Version = version; + } + } + + /** + * Set the stored date string + *

    + * Note we assume that if the supplied string has the value "null" that something + * went wrong and that the string value got populated from a null object. This + * happens if a ant variable is used e.g. date="${date}" when date + * has not been defined to ant! + */ + public void setDate(String date) { + if (date.equals("") || date.equals("null") ) { + m_Date = null; + } else { + m_Date = date; + } + } + + /** + * Set the labeled version to operate on in SourceSafe + *

    + * Note we assume that if the supplied string has the value "null" that something + * went wrong and that the string value got populated from a null object. This + * happens if a ant variable is used e.g. label="${label_server}" when label_server + * has not been defined to ant! + */ + public void setLabel(String label) { + if ( label.equals("") || label.equals("null") ) { + m_Label = null; + } else { + m_Label = label; + } + } + + /** + * Simple order of priority. Returns the first specified of version, date, label + * If none of these was specified returns "" + */ + public String getVersionCommand() { + + if ( m_Version != null) { + return new String(" " + FLAG_VERSION + m_Version); + } + + if ( m_Date != null) { + return new String(" " + FLAG_VERSION_DATE + m_Date); + } + + if (m_Label != null) { + return new String(" " + FLAG_VERSION_LABEL + m_Label); + } + + return ""; + } + +} +