view mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgFileUtil.java @ 509:94974e3482f6 Faradi-7.1.x

TW-24405 create unique temp dirs
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Mon, 12 Nov 2012 21:15:44 +0400
parents 892f95a0f82d
children 3eb02fd5fd78
line wrap: on
line source
package jetbrains.buildServer.buildTriggers.vcs.mercurial;

import com.intellij.openapi.diagnostic.Logger;
import jetbrains.buildServer.util.FileUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.io.File;
import java.io.IOException;

/**
 * @author dmitry.neverov
 */
public final class HgFileUtil {

  private final static String TEMP_DIR_PREFIX = "hg";

  private HgFileUtil() {
  }

  /**
   * Create a temp dir with short name
   * @return created dir
   * @throws IOException in case of I/O error
   */
  public static File createTempDir() throws IOException {
    File parentDir = new File(FileUtil.getTempDirectory());
    int suffix = 0;
    File dir;
    do {
      suffix++;
      dir = new File(parentDir, TEMP_DIR_PREFIX + suffix);
    } while (dir.exists() || !dir.createNewFile());
    dir.delete();
    dir.mkdir();
    return dir;
  }


  public static void deleteDir(@Nullable File dir, @NotNull Logger logger) {
    if (dir == null)
      return;
    boolean dirDeleted = FileUtil.delete(dir);
    if (!dirDeleted)
      logger.warn("Cannot delete directory " + dir.getAbsolutePath());
  }
}