package com.perforce.maven.mojo.workspace;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.scm.repository.ScmRepository;
import org.codehaus.plexus.util.StringUtils;
import com.perforce.maven.mojo.P4Mojo;
import com.perforce.maven.scm.provider.p4.manager.P4ServerManager;
import com.perforce.maven.scm.provider.p4.repository.P4ScmProviderRepository;
import com.perforce.p4java.client.IClient;
/**
* Remove current workspace
*/
@Mojo( name = "remove-current-workspace", requiresProject = true, threadSafe = true, defaultPhase = LifecyclePhase.INITIALIZE, aggregator = true )
public class RemoveWorkspaceMojo
extends P4Mojo
{
/**
* If not given, use current workspace
*/
@Parameter( property = "p4mojo.workspaceName" )
private String workspaceName;
@Component
private P4ServerManager p4ServerManager;
@Override
public void execute()
throws MojoExecutionException, MojoFailureException
{
try
{
// construct the repo base on the value found under project scm's element
ScmRepository repository = getScmRepository();
P4ScmProviderRepository providerRepo = (P4ScmProviderRepository) repository.getProviderRepository();
if ( StringUtils.isBlank( workspaceName ) )
{
workspaceName = p4ClientManager.discoverClientName( providerRepo, this.project.getBasedir() );
}
IClient client = p4ServerManager.getServer( providerRepo ).getClient( workspaceName );
if ( client != null )
{
p4ServerManager.getServer( providerRepo ).deleteClient( workspaceName, false );
}
}
catch ( Exception e )
{
throw new MojoExecutionException( "Unable to remove current client workspace", e );
}
}
}
# |
Change |
User |
Description |
Committed |
|
#1
|
16716 |
dantran |
Add ablity to remove workspace |
|
|