private void createPath()

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));
  }