Package org.apache.tools.ant.taskdefs.optional.pvcs

# Class Pvcs

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.Task
org.apache.tools.ant.taskdefs.optional.pvcs.Pvcs

All Implemented Interfaces:
  `Cloneable`

public class Pvcs extends Task
Extracts the latest edition of the source code from a PVCS repository. PVCS is a version control system developed by Merant.

Before using this tag, the user running ant must have access to the commands of PVCS (get and pcli) and must have access to the repository. Note that the way to specify the repository is platform dependent so use property to specify location of repository.

This version has been tested against PVCS version 6.5 and 6.6 under Windows and Solaris. 19-04-2001

The task now has a more robust parser. It allows for platform independent file paths and supports file names with (). Thanks to Erik Husby for bringing the bug to my attention. 27-04-2001

UNC paths are now handled properly. Fix provided by Don Jeffery. He also added an UpdateOnly flag that, when true, conditions the PVCS get using the -U option to only update those files that have a modification time (in PVCS) that is newer than the existing workfile. 25-10-2002

Added a revision attribute that currently is a synonym for label, but in a future release the behavior of the label attribute will change to use the -v option of GET. See bug #13847 for discussion.

- ## Field Summary

  ### Fields inherited from class org.apache.tools.ant.Task

  `target, taskName, taskType, wrapper`

  ### Fields inherited from class org.apache.tools.ant.ProjectComponent

  `description, location, project`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Pvcs()`
  Creates a Pvcs object

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addPvcsproject(PvcsProject p)`
  Specify a project within the PVCS repository to extract files from.
  `void`
  `execute()`
  Called by the project to let the task do its work.
  `String`
  `getConfig()`
  returns the path of the configuration file to be used
  `String`
  `getFilenameFormat()`
  The filenameFormat attribute defines a MessageFormat string used to parse the output of the pcli command.
  `String`
  `getForce()`
  Get value of force
  `boolean`
  `getIgnoreReturnCode()`
  Get value of ignorereturncode
  `String`
  `getLabel()`
  Get value of label
  `String`
  `getLineStart()`
  The lineStart attribute is used to parse the output of the pcli command.
  `String`
  `getPromotiongroup()`
  Get value of promotiongroup
  `String`
  `getPvcsbin()`
  Get name of the PVCS bin directory
  `String`
  `getPvcsproject()`
  Get name of the project in the PVCS repository
  `Vector<PvcsProject>`
  `getPvcsprojects()`
  Get name of the project in the PVCS repository
  `String`
  `getRepository()`
  Get network name of the PVCS repository
  `String`
  `getRevision()`
  Get value of revision
  `boolean`
  `getUpdateOnly()`
  get the updateOnly attribute.
  `String`
  `getUserId()`
  Get the userid.
  `String`
  `getWorkspace()`
  Get name of the workspace to store the retrieved files
  `protected int`
  `runCmd(Commandline cmd, ExecuteStreamHandler out)`
  Run the command.
  `void`
  `setConfig(File f)`
  Sets a configuration file other than the default to be used.
  `void`
  `setFilenameFormat(String f)`
  The format of the folder names; optional.
  `void`
  `setForce(String f)`
  Specifies the value of the force argument; optional.
  `void`
  `setIgnoreReturnCode(boolean b)`
  If set to true the return value from executing the pvcs commands are ignored; optional, default false.
  `void`
  `setLabel(String l)`
  Only files marked with this label are extracted; optional.
  `void`
  `setLineStart(String l)`
  What a valid return value from PVCS looks like when it describes a file.
  `void`
  `setPromotiongroup(String w)`
  Specifies the name of the promotiongroup argument
  `void`
  `setPvcsbin(String bin)`
  Specifies the location of the PVCS bin directory; optional if on the PATH.
  `void`
  `setPvcsproject(String prj)`
  The project within the PVCS repository to extract files from; optional, default "/"
  `void`
  `setRepository(String repo)`
  The network name of the PVCS repository; required.
  `void`
  `setRevision(String r)`
  Only files with this revision are extract; optional.
  `void`
  `setUpdateOnly(boolean l)`
  If set to true files are fetched only if newer than existing local files; optional, default false.
  `void`
  `setUserId(String u)`
  User ID
  `void`
  `setWorkspace(String ws)`
  Workspace to use; optional.

  ### Methods inherited from class org.apache.tools.ant.Task

  `bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType`

  ### Methods inherited from class org.apache.tools.ant.ProjectComponent

  `clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject`

  ### Methods inherited from class java.lang.Object

  `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### Pvcs

    public Pvcs()
    Creates a Pvcs object

- ## Method Details

  - ### runCmd

    protected int runCmd(Commandline cmd, ExecuteStreamHandler out)
    Run the command.
    Parameters:
      `cmd` - the command line to use.
      `out` - the output stream handler to use.
    Returns:
      the exit code of the command.

  - ### execute

    public void execute() throws BuildException
    Description copied from class: `Task`
    Called by the project to let the task do its work. This method may be called more than once, if the task is invoked more than once. For example, if target1 and target2 both depend on target3, then running "ant target1 target2" will run all tasks in target3 twice.
    Overrides:
      `execute` in class `Task`
    Throws:
      `BuildException` - Something is stopping the build...

  - ### getRepository

    public String getRepository()
    Get network name of the PVCS repository
    Returns:
      String

  - ### getFilenameFormat

    public String getFilenameFormat()
    The filenameFormat attribute defines a MessageFormat string used to parse the output of the pcli command. It defaults to `{0}-arc({1})`. Repositories where the archive extension is not -arc should set this.
    Returns:
      the filename format attribute.

  - ### setFilenameFormat

    public void setFilenameFormat(String f)
    The format of the folder names; optional. This must be in a format suitable for `java.text.MessageFormat`. Index 1 of the format will be used as the file name. Defaults to `{0}-arc({1})`
    Parameters:
      `f` - the format to use.

  - ### getLineStart

    public String getLineStart()
    The lineStart attribute is used to parse the output of the pcli command. It defaults to `"P:`. The parser already knows about / and \\, this property is useful in cases where the repository is accessed on a Windows platform via a drive letter mapping.
    Returns:
      the lineStart attribute.

  - ### setLineStart

    public void setLineStart(String l)
    What a valid return value from PVCS looks like when it describes a file. Defaults to `"P:`. If you are not using an UNC name for your repository and the drive letter `P` is incorrect for your setup, you may need to change this value, UNC names will always be accepted.
    Parameters:
      `l` - the value to use.

  - ### setRepository

    public void setRepository(String repo)
    The network name of the PVCS repository; required.
    Parameters:
      `repo` - String

  - ### getPvcsproject

    public String getPvcsproject()
    Get name of the project in the PVCS repository
    Returns:
      String

  - ### setPvcsproject

    public void setPvcsproject(String prj)
    The project within the PVCS repository to extract files from; optional, default "/"
    Parameters:
      `prj` - String

  - ### getPvcsprojects

    public Vector<PvcsProject> getPvcsprojects()
    Get name of the project in the PVCS repository
    Returns:
      Vector

  - ### getWorkspace

    public String getWorkspace()
    Get name of the workspace to store the retrieved files
    Returns:
      String

  - ### setWorkspace

    public void setWorkspace(String ws)
    Workspace to use; optional. By specifying a workspace, the files are extracted to that location. A PVCS workspace is a name for a location of the workfiles and isn't as such the location itself. You define the location for a workspace using the PVCS GUI clients. If this isn't specified the default workspace for the current user is used.
    Parameters:
      `ws` - String

  - ### getPvcsbin

    public String getPvcsbin()
    Get name of the PVCS bin directory
    Returns:
      String

  - ### setPvcsbin

    public void setPvcsbin(String bin)
    Specifies the location of the PVCS bin directory; optional if on the PATH. On some systems the PVCS executables pcli and get are not found in the PATH. In such cases this attribute should be set to the bin directory of the PVCS installation containing the executables mentioned before. If this attribute isn't specified the tag expects the executables to be found using the PATH environment variable.
    Parameters:
      `bin` - PVCS bin directory
    To do:
      use a File setter and resolve paths.

  - ### getForce

    public String getForce()
    Get value of force
    Returns:
      String

  - ### setForce

    public void setForce(String f)
    Specifies the value of the force argument; optional. If set to yes all files that exists and are writable are overwritten. Default no causes the files that are writable to be ignored. This stops the PVCS command get to stop asking questions!
    Parameters:
      `f` - String (yes/no)
    To do:
      make a boolean setter

  - ### getPromotiongroup

    public String getPromotiongroup()
    Get value of promotiongroup
    Returns:
      String

  - ### setPromotiongroup

    public void setPromotiongroup(String w)
    Specifies the name of the promotiongroup argument
    Parameters:
      `w` - String

  - ### getLabel

    public String getLabel()
    Get value of label
    Returns:
      String

  - ### setLabel

    public void setLabel(String l)
    Only files marked with this label are extracted; optional.
    Parameters:
      `l` - String

  - ### getRevision

    public String getRevision()
    Get value of revision
    Returns:
      String

  - ### setRevision

    public void setRevision(String r)
    Only files with this revision are extract; optional.
    Parameters:
      `r` - String

  - ### getIgnoreReturnCode

    public boolean getIgnoreReturnCode()
    Get value of ignorereturncode
    Returns:
      String

  - ### setIgnoreReturnCode

    public void setIgnoreReturnCode(boolean b)
    If set to true the return value from executing the pvcs commands are ignored; optional, default false.
    Parameters:
      `b` - a `boolean` value.

  - ### addPvcsproject

    public void addPvcsproject(PvcsProject p)
    Specify a project within the PVCS repository to extract files from.
    Parameters:
      `p` - the pvcs project to use.

  - ### getUpdateOnly

    public boolean getUpdateOnly()
    get the updateOnly attribute.
    Returns:
      the updateOnly attribute.

  - ### setUpdateOnly

    public void setUpdateOnly(boolean l)
    If set to true files are fetched only if newer than existing local files; optional, default false.
    Parameters:
      `l` - a `boolean` value.

  - ### getConfig

    public String getConfig()
    returns the path of the configuration file to be used
    Returns:
      the path of the config file

  - ### setConfig

    public void setConfig(File f)
    Sets a configuration file other than the default to be used. These files have a .cfg extension and are often found in archive or pvcsprop folders.
    Parameters:
      `f` - config file - can be given absolute or relative to ant basedir

  - ### getUserId

    public String getUserId()
    Get the userid.
    Returns:
      the userid.

  - ### setUserId

    public void setUserId(String u)
    User ID
    Parameters:
      `u` - the value to use.