in wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/ScpHelper.java [177:240]
public void putDirectory(Wagon wagon, File sourceDirectory, String destinationDirectory)
throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException {
Repository repository = wagon.getRepository();
String basedir = repository.getBasedir();
String destDir = StringUtils.replace(destinationDirectory, "\\", "/");
String path = getPath(basedir, destDir);
try {
if (repository.getPermissions() != null) {
String dirPerms = repository.getPermissions().getDirectoryMode();
if (dirPerms != null) {
String umaskCmd = "umask " + PermissionModeUtils.getUserMaskFor(dirPerms);
executor.executeCommand(umaskCmd);
}
}
// String mkdirCmd = "mkdir -p " + path;
String mkdirCmd = "mkdir -p \"" + path + "\"";
executor.executeCommand(mkdirCmd);
} catch (CommandExecutionException e) {
throw new TransferFailedException("Error performing commands for file transfer", e);
}
File zipFile;
try {
zipFile = File.createTempFile("wagon", ".zip");
zipFile.deleteOnExit();
List<String> files = FileUtils.getFileNames(sourceDirectory, "**/**", "", false);
createZip(files, zipFile, sourceDirectory);
} catch (IOException e) {
throw new TransferFailedException("Unable to create ZIP archive of directory", e);
}
wagon.put(zipFile, getPath(destDir, zipFile.getName()));
try {
// executor.executeCommand(
// "cd " + path + "; unzip -q -o " + zipFile.getName() + "; rm -f " + zipFile.getName() );
executor.executeCommand("cd \"" + path + "\"; unzip -q -o \"" + zipFile.getName() + "\"; rm -f \""
+ zipFile.getName() + "\"");
zipFile.delete();
RepositoryPermissions permissions = repository.getPermissions();
if (permissions != null && permissions.getGroup() != null) {
// executor.executeCommand( "chgrp -Rf " + permissions.getGroup() + " " + path );
executor.executeCommand("chgrp -Rf " + permissions.getGroup() + " \"" + path + "\"");
}
if (permissions != null && permissions.getFileMode() != null) {
// executor.executeCommand( "chmod -Rf " + permissions.getFileMode() + " " + path );
executor.executeCommand("chmod -Rf " + permissions.getFileMode() + " \"" + path + "\"");
}
} catch (CommandExecutionException e) {
throw new TransferFailedException("Error performing commands for file transfer", e);
}
}