fun stripTopLevelDirectory()

in intellij-plugin-verifier/verifier-repository/src/main/java/com/jetbrains/pluginverifier/ide/IdeDownloader.kt [99:145]


    fun stripTopLevelDirectory(directory: Path) {
      val entries = directory.listFiles()
      if (entries.size != 1) {
        return
      }

      val single = entries.single()
      if (!single.isDirectory) {
        return
      }

      val contents = single.listFiles()
      if (contents.isEmpty()) {
        Files.delete(single)
        return
      }

      var conflict: Path? = null
      for (from in contents) {
        if (from.simpleName == single.simpleName) {
          conflict = from
          continue
        }

        val to = directory.resolve(from.simpleName)
        Files.move(from, to)
      }

      if (conflict != null) {
        //Create a unique temporary name from the set of files.
        //This name will be used as a destination of a conflicting name.
        val uniqueTempName = contents.maxOfOrNull { it.simpleName } + ".temp"
        val tempDestination = directory.resolve(uniqueTempName)

        //Move conflict to unique location.
        require(!tempDestination.exists())
        Files.move(conflict, tempDestination)

        //Delete empty single
        require(single.listFiles().isEmpty())
        single.deleteLogged()

        Files.move(tempDestination, single)
      } else {
        single.deleteLogged()
      }
    }