import java.nio.file.Files

String buildNumber = System.getenv('BUILD_NUMBER')

if (buildNumber) {
  File uploadFile = file("build/${buildNumber}.tar.bz2")
  project.gradle.buildFinished { result ->
    println "build complete, generating: $uploadFile"
    if (uploadFile.exists()) {
      project.delete(uploadFile)
    }

    try {
      ant.tar(destfile: uploadFile, compression: "bzip2", longfile: "gnu") {
        fileset(dir: projectDir) {
          Set<File> fileSet = fileTree(projectDir) {
            include("**/*.hprof")
            include("**/reaper.log")
            include("**/build/testclusters/**")
            exclude("**/build/testclusters/**/data/**")
            exclude("**/build/testclusters/**/distro/**")
            exclude("**/build/testclusters/**/repo/**")
            exclude("**/build/testclusters/**/extract/**")
          }
            .files
            .findAll { Files.isRegularFile(it.toPath()) }

          if (fileSet.empty) {
            // In cases where we don't match any workspace files, exclude everything
            ant.exclude(name: "**/*")
          } else {
            fileSet.each {
              ant.include(name: projectDir.toPath().relativize(it.toPath()))
            }
          }
        }

        fileset(dir: "${gradle.gradleUserHomeDir}/daemon/${gradle.gradleVersion}", followsymlinks: false) {
          include(name: "**/daemon-${ProcessHandle.current().pid()}*.log")
        }

        fileset(dir: "${gradle.gradleUserHomeDir}/workers", followsymlinks: false)
      }
    } catch (Exception e) {
      logger.lifecycle("Failed to archive additional logs", e)
    }
  }
}