import org.elasticsearch.gradle.BuildPlugin
import org.elasticsearch.gradle.VersionProperties
import org.elasticsearch.gradle.precommit.LicenseHeadersTask

if (project.projectDir.name != 'x-pack-elasticsearch') {
  throw new GradleException('You must checkout x-pack-elasticsearch in the following directory: <path to Elasticsearch checkout>/../elasticsearch-extra/x-pack-elasticsearch')
}

subprojects {
  plugins.withType(MavenPublishPlugin).whenPluginAdded {
    publishing {
      publications {
        // add license information to generated poms
        all {
          pom.withXml { XmlProvider xml ->
            Node node = xml.asNode()

            Node license = node.appendNode('licenses').appendNode('license')
            license.appendNode('name', 'Elastic Commercial Software End User License Agreement')
            license.appendNode('url', 'https://www.elastic.co/eula/')
            license.appendNode('distribution', 'repo')

            Node developer = node.appendNode('developers').appendNode('developer')
            developer.appendNode('name', 'Elastic')
            developer.appendNode('url', 'http://www.elastic.co')
          }
        }
      }
    }
  }

  plugins.withType(BuildPlugin).whenPluginAdded {
    project.licenseFile = project(':x-pack-elasticsearch').file('LICENSE.txt')
    project.noticeFile = project(':x-pack-elasticsearch').file('NOTICE.txt')
  }
}

File checkstyleSuppressions = file('dev-tools/checkstyle_suppressions.xml')
subprojects {
  tasks.withType(Checkstyle) {
    inputs.file(checkstyleSuppressions)
    // Use x-pack-elasticsearch specific suppressions file rather than the open source one.
    configProperties = [
      suppressions: checkstyleSuppressions
    ]
  }

  tasks.withType(LicenseHeadersTask.class) {
    approvedLicenses = ['Elasticsearch Confidential', 'Generated']
    additionalLicense 'ESCON', 'Elasticsearch Confidential', 'ELASTICSEARCH CONFIDENTIAL'
  }
  ext.projectSubstitutions += [ "org.elasticsearch.plugin:x-pack-api:${version}": ':x-pack-elasticsearch:plugin']

  if (wireCompatVersions[-1].snapshot) {
    /* The last and second to last versions can be snapshots. Rather than use
     * snapshots built by CI we connect these versions to projects that build
     * those versions from the HEAD of the appropriate branch. */
    if (indexCompatVersions[-1].bugfix == 0) {
      ext.projectSubstitutions += [
        "org.elasticsearch.plugin:x-pack:${indexCompatVersions[-1]}": ':x-pack-elasticsearch:plugin:bwc:stable-snapshot',
        "org.elasticsearch.plugin:x-pack:${indexCompatVersions[-2]}": ':x-pack-elasticsearch:plugin:bwc:release-snapshot']
    } else {
      ext.projectSubstitutions += [
        "org.elasticsearch.plugin:x-pack:${indexCompatVersions[-1]}": ':x-pack-elasticsearch:plugin:bwc:release-snapshot']
    }
  }
}