/*
 * MIT License
 *
 * Copyright (c) 2020-present Cloudogu GmbH and Contributors
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

import org.gradle.util.VersionNumber

plugins {
  id 'org.scm-manager.packaging'
  id 'signing'
  id 'maven-publish'
  id 'org.scm-manager.license'
}

configurations {
  server
  webapp
  jsvc
  unixPkg
  packageYaml {
    canBeConsumed = true
  }
}

dependencies {
  server project(':scm-server')
  webapp project(path: ':scm-webapp', configuration: 'webapp')
  jsvc libraries.jsvc
}

task unix(type: Tar) {
  VersionNumber version = VersionNumber.parse(project.version)

  archiveFileName = "unix-${project.version}.tar.gz"
  into('scm-server') {
    into('conf') {
      from 'src/main/fs/conf'
      include 'server-config.xml'
      expand([version: version])
    }
    from('src/main/fs') {
      exclude('**/server-config.xml')
    }
    into('bin') {
      from('src/main/bin') {
        fileMode 0755
      }
    }
    into('lib') {
      from project.configurations.server
    }
    into('var/webapp') {
      from project.configurations.webapp
      rename {
        'scm-webapp.war'
      }
    }
  }

  project.configurations.jsvc.each { archive ->
    into('.') {
      from tarTree(archive)
      include '**/jsvc*'
      eachFile { fcd ->
        fcd.relativePath = new RelativePath(true, "scm-server/libexec/${fcd.name}")
      }
      includeEmptyDirs = false
    }
  }

  destinationDir file('build/libs')
  compression = Compression.GZIP
}

task distribution(type: PackageYaml)  {
  type = 'unix'
  artifact = file("build/libs/unix-${project.version}.tar.gz")
  dependsOn unix
}

artifacts {
  unixPkg unix
  packageYaml(file('build/libs/package.yml')) {
    builtBy distribution
  }
}

signing {
  sign publishing.publications
}

publishing {
  publications {
    mavenJava(MavenPublication) {
      groupId "sonia.scm.packaging"
      artifactId project.name
      version project.version

      artifact(unix) {
        extension 'tar.gz'
      }
    }
  }
}

project.rootProject.publishing.repositories.each { r ->
  project.publishing.repositories.add(r)
}

license {
  header rootProject.file("LICENSE.txt")
  lineEnding = "\n"

  tasks {
    build {
      files.from("build.gradle", "Dockerfile")
    }
    main {
      files.from("src")
    }
  }
}
