in deploy-runner-agent/src/main/java/jetbrains/buildServer/deployer/agent/ftp/InterruptibleUploadProcess.java [134:166]
private void createPath(@NotNull final String path) throws IOException, FailureDetectedException {
final String root = myClient.printWorkingDirectory();
final String normalisedPath = path.trim().replaceAll("\\\\", "/");
final StringTokenizer pathTokenizer = new StringTokenizer(normalisedPath, "/");
if (path.startsWith("/")) {
checkResult(myClient.changeWorkingDirectory("/")); // support absolute paths
}
boolean prevDirExisted = true;
while (pathTokenizer.hasMoreTokens()) {
checkIsInterrupted();
final String nextDir = pathTokenizer.nextToken();
if (prevDirExisted && dirExists(nextDir)) {
checkResult(myClient.changeWorkingDirectory(nextDir));
} else {
String mkdirFailureMsg = null;
if (!myClient.makeDirectory(nextDir)) {
mkdirFailureMsg = myClient.getReplyString();
} else {
prevDirExisted = false;
}
if (!myClient.changeWorkingDirectory(nextDir)) {
String cwdFailureMsg = myClient.getReplyString();
String message = "Failed to change current dir to [" + nextDir + "]: " + cwdFailureMsg +
(mkdirFailureMsg != null ? "\n Also failed to create this dir: " + mkdirFailureMsg : "");
throw new FailureDetectedException(message);
}
}
}
checkResult(myClient.changeWorkingDirectory(root));
}