/*
 * Licensed to Elasticsearch under one or more contributor
 * license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright
 * ownership. Elasticsearch licenses this file to you 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 org.elasticsearch.gradle.plugin.PluginBuildPlugin

task buildZip(type: Zip) {
  dependsOn createPluginsDir
  baseName = 'elasticsearch'
  with archivesFiles
}

artifacts {
  'default' buildZip
  archives buildZip
}

publishing {
  publications {
    nebula {
      artifactId 'elasticsearch'
      artifact buildZip
    }
    /* HUGE HACK: the underlying maven publication library refuses to deploy any attached artifacts
     * when the packaging type is set to 'pom'. But Sonatype's OSS repositories require source files
     * for artifacts that are of type 'zip'. We already publish the source and javadoc for Elasticsearch
     * under the various other subprojects. So here we create another publication using the same
     * name that has the "real" pom, and rely on the fact that gradle will execute the publish tasks
     * in alphabetical order. This lets us publish the zip file and even though the pom says the
     * type is 'pom' instead of 'zip'. We cannot setup a dependency between the tasks because the
     * publishing tasks are created *extremely* late in the configuration phase, so that we cannot get
     * ahold of the actual task. Furthermore, this entire hack only exists so we can make publishing to
     * maven local work, since we publish to maven central externally. */
    nebulaRealPom(MavenPublication) {
      artifactId 'elasticsearch'
      pom.packaging = 'pom'
      pom.withXml { XmlProvider xml ->
        Node root = xml.asNode()
        root.appendNode('name', 'Elasticsearch')
        root.appendNode('description', 'A Distributed RESTful Search Engine')
        root.appendNode('url', PluginBuildPlugin.urlFromOrigin(project.scminfo.origin))
        Node scmNode = root.appendNode('scm')
        scmNode.appendNode('url', project.scminfo.origin)
      }
    }
  }
}

integTest.dependsOn buildZip