Add templates for ClearCase, Starteam and Perforce for scm-usage page.

git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@378073 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
ltheussl committed 2006-02-15 19:41:31 +00:00
1 parent 2e3901818a
commit ab3eda60d2
10 files changed
+382 -31

No files matched your search

@@ -20,6 +20,19 @@ package org.apache.maven.xdoc.util;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.scm.manager.NoSuchScmProviderException;
import org.apache.maven.scm.manager.ScmManager;
import org.apache.maven.scm.provider.clearcase.ClearCaseScmProvider;
import org.apache.maven.scm.provider.clearcase.repository.ClearCaseScmProviderRepository;
import org.apache.maven.scm.provider.perforce.PerforceScmProvider;
import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
import org.apache.maven.scm.provider.starteam.StarteamScmProvider;
import org.apache.maven.scm.provider.starteam.repository.StarteamScmProviderRepository;
import org.apache.maven.scm.repository.ScmRepository;
import org.apache.maven.scm.repository.ScmRepositoryException;
import org.apache.maven.util.EnhancedStringTokenizer;
/**
@@ -118,6 +131,139 @@ public final class ScmUtil
return null;
}
/**
* Create the documentation to provide an developer access with a <code>Perforce</code> SCM.
* For example, generate the following command line:
* <p>p4 -H hostname -p port -u username -P password path</p>
* <p>p4 -H hostname -p port -u username -P password path submit -c changement</p>
*
* @param perforceRepo
* @see <a href="http://www.perforce.com/perforce/doc.051/manuals/cmdref/index.html">http://www.perforce.com/perforce/doc.051/manuals/cmdref/index.html</>
*/
public String developerAccessPerforce( String devConnection )
{
StringBuffer command = new StringBuffer();
char delim = getSCMConnectionSeparator( devConnection ).charAt( 0 );
PerforceScmProvider perforceProvider= new PerforceScmProvider();
PerforceScmProviderRepository perforceRepo;
String scmSpecificUrl = devConnection.substring( 13 );
try
{
perforceRepo = (PerforceScmProviderRepository)
perforceProvider.makeProviderScmRepository( scmSpecificUrl, delim );
}
catch (ScmRepositoryException e)
{
System.err.println( "Your developerConnection does not seem to be valid: " + e.getMessage() );
return "";
}
command.append( "p4" );
if ( !StringUtils.isEmpty( perforceRepo.getHost() ) )
{
command.append( " -H " ).append( perforceRepo.getHost() );
}
if ( perforceRepo.getPort() > 0 )
{
command.append( " -p " + perforceRepo.getPort() );
}
command.append( " -u username" );
command.append( " -P password" );
command.append( " " );
command.append( perforceRepo.getPath() );
command.append( "\n" );
command.append( "p4 submit -c \"A comment\"" );
return command.toString();
}
// Starteam
/**
* Create the documentation to provide an developer access with a <code>Starteam</code> SCM.
* For example, generate the following command line:
* <p>stcmd co -x -nologo -stop -p myusername:mypassword@myhost:1234/projecturl -is</p>
* <p>stcmd ci -x -nologo -stop -p myusername:mypassword@myhost:1234/projecturl -f NCI -is</p>
*
* @param starteamRepo
*/
public String developerAccessStarteam( String devConnection )
{
StringBuffer command = new StringBuffer();
char delim = getSCMConnectionSeparator( devConnection ).charAt( 0 );
StarteamScmProvider starteamProvider= new StarteamScmProvider();
StarteamScmProviderRepository starteamRepo;
String scmSpecificUrl = devConnection.substring( 13 );
try
{
starteamRepo = (StarteamScmProviderRepository)
starteamProvider.makeProviderScmRepository( scmSpecificUrl, delim );
}
catch (ScmRepositoryException e)
{
System.err.println( "Your developerConnection does not seem to be valid: " + e.getMessage() );
return "";
}
// Safety: remove the username/password if present
String fullUrl = StringUtils.replace( starteamRepo.getFullUrl(), starteamRepo.getUser(), "username" );
fullUrl = StringUtils.replace( fullUrl, starteamRepo.getPassword(), "password" );
command.append( "stcmd co -x -nologo -stop -p " );
command.append( fullUrl );
command.append( " -is" );
command.append( "\n" );
command.append( "stcmd ci -x -nologo -stop -p " );
command.append( fullUrl );
command.append( " -f NCI -is" );
return command.toString();
}
/**
* Create the documentation to provide an developer access with a <code>Clearcase</code> SCM.
* For example, generate the following command line:
* <p>cleartool checkout module</p>
*
* @param clearCaseRepo
*/
public String developerAccessClearCase( String devConnection )
{
StringBuffer command = new StringBuffer();
char delim = getSCMConnectionSeparator( devConnection ).charAt( 0 );
ClearCaseScmProvider clearCaseProvider= new ClearCaseScmProvider();
ClearCaseScmProviderRepository clearCaseRepo;
String scmSpecificUrl = devConnection.substring( 14 );
try
{
clearCaseRepo = (ClearCaseScmProviderRepository)
clearCaseProvider.makeProviderScmRepository( scmSpecificUrl, delim );
}
catch (ScmRepositoryException e)
{
System.err.println( "Your developerConnection does not seem to be valid: " + e.getMessage() );
return "";
}
command.append( "cleartool checkout " ).append( clearCaseRepo.getViewName( "id" ) );
return command.toString();
}
/**
* Splits an SCM string into parts.
*