use of org.codehaus.plexus.util.cli.Commandline in project maven-scm by apache.
the class VssCheckOutCommand method buildCmdLine.
public Commandline buildCmdLine(VssScmProviderRepository repo, ScmFileSet fileSet, ScmVersion version) throws ScmException {
Commandline command = new Commandline();
command.setWorkingDirectory(fileSet.getBasedir().getAbsolutePath());
try {
command.addSystemEnvironment();
} catch (Exception e) {
throw new ScmException("Can't add system environment.", e);
}
command.addEnvironment("SSDIR", repo.getVssdir());
String ssDir = VssCommandLineUtils.getSsDir();
command.setExecutable(ssDir + VssConstants.SS_EXE);
command.createArg().setValue(VssConstants.COMMAND_GET);
command.createArg().setValue(VssConstants.PROJECT_PREFIX + repo.getProject());
// User identification to get access to vss repository
if (repo.getUserPassword() != null) {
command.createArg().setValue(VssConstants.FLAG_LOGIN + repo.getUserPassword());
}
// Display the history of an entire project list
command.createArg().setValue(VssConstants.FLAG_RECURSION);
// Ignore: Do not ask for input under any circumstances.
command.createArg().setValue(VssConstants.FLAG_AUTORESPONSE_DEF);
// Ignore: Do not touch local writable files.
command.createArg().setValue(VssConstants.FLAG_REPLACE_WRITABLE);
if (version != null) {
command.createArg().setValue(VssConstants.FLAG_VERSION_LABEL + '"' + version + '"');
}
return command;
}
use of org.codehaus.plexus.util.cli.Commandline in project maven-scm by apache.
the class VssCheckOutCommand method executeCheckOutCommand.
/**
* {@inheritDoc}
*/
protected CheckOutScmResult executeCheckOutCommand(ScmProviderRepository repository, ScmFileSet fileSet, ScmVersion version, boolean recursive, boolean shallow) throws ScmException {
if (getLogger().isDebugEnabled()) {
getLogger().debug("executing checkout command...");
}
VssScmProviderRepository repo = (VssScmProviderRepository) repository;
Commandline cl = buildCmdLine(repo, fileSet, version);
VssCheckOutConsumer consumer = new VssCheckOutConsumer(repo, getLogger());
// TODO handle deleted files from VSS
CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
int exitCode;
if (getLogger().isDebugEnabled()) {
getLogger().debug("Executing: " + cl.getWorkingDirectory().getAbsolutePath() + ">>" + cl.toString());
}
exitCode = VssCommandLineUtils.executeCommandline(cl, consumer, stderr, getLogger());
if (exitCode != 0) {
String error = stderr.getOutput();
if (getLogger().isDebugEnabled()) {
getLogger().debug("VSS returns error: [" + error + "] return code: [" + exitCode + "]");
}
if (error.indexOf("A writable copy of") < 0) {
return new CheckOutScmResult(cl.toString(), "The vss command failed.", error, false);
}
// print out the writable copy for manual handling
if (getLogger().isWarnEnabled()) {
getLogger().warn(error);
}
}
return new CheckOutScmResult(cl.toString(), consumer.getUpdatedFiles());
}
use of org.codehaus.plexus.util.cli.Commandline in project maven-scm by apache.
the class VssEditCommand method buildCmdLine.
public List<Commandline> buildCmdLine(VssScmProviderRepository repo, ScmFileSet fileSet) throws ScmException {
List<File> files = fileSet.getFileList();
List<Commandline> commands = new ArrayList<Commandline>();
if (files.size() > 0) {
String base;
try {
base = fileSet.getBasedir().getCanonicalPath();
} catch (IOException e) {
throw new ScmException("Invalid canonical path", e);
}
for (File file : files) {
Commandline command = new Commandline();
try {
command.addSystemEnvironment();
} catch (Exception e) {
throw new ScmException("Can't add system environment.", e);
}
command.addEnvironment("SSDIR", repo.getVssdir());
String ssDir = VssCommandLineUtils.getSsDir();
command.setExecutable(ssDir + VssConstants.SS_EXE);
command.createArg().setValue(VssConstants.COMMAND_CHECKOUT);
String absolute;
try {
absolute = file.getCanonicalPath();
String relative;
int index = absolute.indexOf(base);
if (index >= 0) {
relative = absolute.substring(index + base.length());
} else {
relative = file.getPath();
}
relative = relative.replace('\\', '/');
if (!relative.startsWith("/")) {
relative = '/' + relative;
}
String relativeFolder = relative.substring(0, relative.lastIndexOf('/'));
command.setWorkingDirectory(new File(fileSet.getBasedir().getAbsolutePath() + File.separatorChar + relativeFolder).getCanonicalPath());
command.createArg().setValue(VssConstants.PROJECT_PREFIX + repo.getProject() + relative);
} catch (IOException e) {
throw new ScmException("Invalid canonical path", e);
}
// User identification to get access to vss repository
if (repo.getUserPassword() != null) {
command.createArg().setValue(VssConstants.FLAG_LOGIN + repo.getUserPassword());
}
// Ignore: Do not ask for input under any circumstances.
command.createArg().setValue(VssConstants.FLAG_AUTORESPONSE_DEF);
commands.add(command);
}
} else {
Commandline command = new Commandline();
command.setWorkingDirectory(fileSet.getBasedir().getAbsolutePath());
try {
command.addSystemEnvironment();
} catch (Exception e) {
throw new ScmException("Can't add system environment.", e);
}
command.addEnvironment("SSDIR", repo.getVssdir());
String ssDir = VssCommandLineUtils.getSsDir();
command.setExecutable(ssDir + VssConstants.SS_EXE);
command.createArg().setValue(VssConstants.COMMAND_CHECKOUT);
command.createArg().setValue(VssConstants.PROJECT_PREFIX + repo.getProject());
// Display the history of an entire project list
command.createArg().setValue(VssConstants.FLAG_RECURSION);
// User identification to get access to vss repository
if (repo.getUserPassword() != null) {
command.createArg().setValue(VssConstants.FLAG_LOGIN + repo.getUserPassword());
}
// Ignore: Do not ask for input under any circumstances.
command.createArg().setValue(VssConstants.FLAG_AUTORESPONSE_DEF);
commands.add(command);
}
return commands;
}
use of org.codehaus.plexus.util.cli.Commandline in project maven-scm by apache.
the class VssStatusCommand method buildCmdLine.
public Commandline buildCmdLine(VssScmProviderRepository repo, ScmFileSet fileSet) throws ScmException {
Commandline command = new Commandline();
command.setWorkingDirectory(fileSet.getBasedir().getAbsolutePath());
try {
command.addSystemEnvironment();
} catch (Exception e) {
throw new ScmException("Can't add system environment.", e);
}
command.addEnvironment("SSDIR", repo.getVssdir());
String ssDir = VssCommandLineUtils.getSsDir();
command.setExecutable(ssDir + VssConstants.SS_EXE);
command.createArg().setValue(VssConstants.COMMAND_DIFF);
command.createArg().setValue(VssConstants.PROJECT_PREFIX + repo.getProject());
// User identification to get access to vss repository
if (repo.getUserPassword() != null) {
command.createArg().setValue(VssConstants.FLAG_LOGIN + repo.getUserPassword());
}
// Display the history of an entire project list
command.createArg().setValue(VssConstants.FLAG_RECURSION);
// Ignore: Do not ask for input under any circumstances.
command.createArg().setValue(VssConstants.FLAG_AUTORESPONSE_DEF);
return command;
}
use of org.codehaus.plexus.util.cli.Commandline in project maven-scm by apache.
the class VssStatusCommand method executeStatusCommand.
/**
* {@inheritDoc}
*/
protected StatusScmResult executeStatusCommand(ScmProviderRepository repository, ScmFileSet fileSet) throws ScmException {
if (getLogger().isDebugEnabled()) {
getLogger().debug("executing status command...");
}
VssScmProviderRepository repo = (VssScmProviderRepository) repository;
Commandline cl = buildCmdLine(repo, fileSet);
VssStatusConsumer consumer = new VssStatusConsumer(repo, getLogger(), fileSet);
CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
int exitCode;
if (getLogger().isDebugEnabled()) {
getLogger().debug("Executing: " + cl.getWorkingDirectory().getAbsolutePath() + ">>" + cl.toString());
}
exitCode = VssCommandLineUtils.executeCommandline(cl, consumer, stderr, getLogger());
if (exitCode != 0) {
String error = stderr.getOutput();
if (getLogger().isDebugEnabled()) {
getLogger().debug("VSS returns error: [" + error + "] return code: [" + exitCode + "]");
}
return new StatusScmResult(cl.toString(), "The vss command failed.", error, false);
}
return new StatusScmResult(cl.toString(), consumer.getUpdatedFiles());
}
Aggregations