/*
 * Copyright Thoughtworks, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import com.thoughtworks.go.build.DownloadFile
import com.thoughtworks.go.build.TextUtils

def destFile(String url) {
  new File(gradle.gradleUserHomeDir, "download-cache/${TextUtils.md5Hex(url)}/${new File(URI.create(url).toURL().path).name}")
}

def downloadTanukiDeltaPack = tasks.register('downloadTanukiDeltaPack', DownloadFile) {
  def srcUrl = "https://download.tanukisoftware.com/wrapper/${project.versions.tanuki.split('-').first()}/wrapper-delta-pack-${project.versions.tanuki}.tar.gz"
  src srcUrl
  dest destFile(srcUrl)
  checksum = project.versions.tanukiSha256sum
}

tasks.register('extractDeltaPack', Copy) {
  dependsOn downloadTanukiDeltaPack
  destinationDir = layout.buildDirectory.dir("tanuki").get().asFile
  from(project.tarTree(downloadTanukiDeltaPack.map { it.outputFiles.first() })) {
    eachFile { FileCopyDetails fcd ->
      fcd.relativePath = new RelativePath(true, fcd.relativePath.segments.drop(1))
    }
    includeEmptyDirs = false
  }
}
