import org.apache.tools.ant.filters.ReplaceTokens

import static virgobuild.UpdateSitePlugin.CREATE_P2_REPOSITORY_TASK_NAME
import static virgobuild.UpdateSitePlugin.PRE_NORMALIZED_BUNDLES_DIR_NAME
import static virgobuild.VirgoToolsPlugin.installProduct
import static virgobuild.VirgoToolsPlugin.publishProduct

import virgobuild.Constants

apply plugin: virgobuild.UpdateSitePlugin
apply plugin: 'org.hidetake.ssh'

buildscript {
    repositories { jcenter() }
    dependencies { classpath 'org.hidetake:gradle-ssh-plugin:1.1.2' }
}

updateSite {
    extraResources = files('epl-v10.html', 'notice.html', 'p2.index')
    hook { Project project ->
        postProcessing(project)
    }
    signing { File unsignedFolder, File signedFolder ->
        if (gradle.taskGraph.hasTask(uploadUpdateSite)) {
            signByEclipseService(unsignedFolder, signedFolder)
        } else {
            signLocally(unsignedFolder, signedFolder)
        }
    }
    mutateArtifactsXml { Node artifactsXml ->
        addExtraPropertiesToArtifactsXml(artifactsXml)
    }
}

remotes {
    eclipseDotOrg {
        host = ECLIPSE_ORG_FTP_HOST
        user =  ECLIPSE_ORG_FTP_USER
        password = ECLIPSE_ORG_FTP_PASSWORD
        knownHosts = project.rootProject.file('gradle/ssh/known_hosts')
    }
}

dependencies {
    localPlugin project(':kernel:org.eclipse.virgo.kernel.agent.dm')
    localPlugin project(':kernel:org.eclipse.virgo.kernel.artifact')
    localPlugin project(':kernel:org.eclipse.virgo.kernel.deployer')
    localPlugin project(':kernel:org.eclipse.virgo.kernel.deployer.dm')
    localPlugin project(':kernel:org.eclipse.virgo.kernel.dmfragment')
    localPlugin project(':kernel:org.eclipse.virgo.kernel.equinox.extensions')
    localPlugin project(':kernel:org.eclipse.virgo.kernel.kerneldmfragment')
    localPlugin project(':kernel:org.eclipse.virgo.kernel.model')
    localPlugin project(':kernel:org.eclipse.virgo.kernel.osgi')
    localPlugin project(':kernel:org.eclipse.virgo.kernel.services')
    localPlugin project(':kernel:org.eclipse.virgo.kernel.userregion')
    localPlugin project(':kernel:org.eclipse.virgo.kernel.userregionfactory')
    localPlugin project(':kernel:org.eclipse.virgo.management.console')
    localPlugin project(':kernel:org.eclipse.virgo.management.fragment')
    localPlugin project(':kernel:org.eclipse.virgo.shell.command')

    localPlugin project(':medic:org.eclipse.virgo.medic')
    localPlugin project(':medic:org.eclipse.virgo.medic.core')
    localPlugin project(':medic:org.eclipse.virgo.medic.logbackclassicfragment')
    localPlugin project(':medic:org.eclipse.virgo.medic.logbackcorefragment')

    localPlugin project(':nano:org.eclipse.virgo.nano.core')
    localPlugin project(':nano:org.eclipse.virgo.nano.deployer')
    localPlugin project(':nano:org.eclipse.virgo.nano.deployer.api')
    localPlugin project(':nano:org.eclipse.virgo.nano.deployer.hot')
    localPlugin project(':nano:org.eclipse.virgo.nano.management')
    localPlugin project(':nano:org.eclipse.virgo.nano.management.controller')
    localPlugin project(':nano:org.eclipse.virgo.nano.services.concurrent')
    localPlugin project(':nano:org.eclipse.virgo.nano.services.ds')

    localPlugin project(':repository:org.eclipse.virgo.repository')
    // TODO - review if all those signedExternalPlugins are signed
    signedExternalPlugin group: 'org.eclipse.virgo.mirrored', name: 'org.apache.commons.codec', version: commonsCodecVersion, ext: "jar"
    // optional requirement for org.springframework.core
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.commons.logging", version: commonsLoggingVersion, ext: "jar"

    signedExternalPlugin group: 'org.eclipse.virgo.mirrored', name: 'oevm.org.apache.commons.httpclient', version: commonsHttpClientVersion, ext: "jar"

    localPlugin project(':util:org.eclipse.virgo.util.common')
    localPlugin project(':util:org.eclipse.virgo.util.env')
    localPlugin project(':util:org.eclipse.virgo.util.io')
    localPlugin project(':util:org.eclipse.virgo.util.jmx')
    localPlugin project(':util:org.eclipse.virgo.util.math')
    localPlugin project(':util:org.eclipse.virgo.util.osgi')
    localPlugin project(':util:org.eclipse.virgo.util.osgi.manifest')
    localPlugin project(':util:org.eclipse.virgo.util.parser.launcher')
    localPlugin project(':util:org.eclipse.virgo.util.parser.manifest')

    localPlugin project(':web:org.eclipse.virgo.web.core')
    localPlugin project(':web:org.eclipse.virgo.web.dm')
    localPlugin project(':web:org.eclipse.virgo.web.tomcat.support')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.appdeployer')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.applistener')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.catalina.fragment.webbeans')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.javax.persistence.extension')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.javax.persistence.provider.initializer')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.jsf.support')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.openejb.fragment.bval')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.openejb.fragment.jotm')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.openejb.fragment.jpa')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.openejb.fragment.webbeans')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.openejb.initialiser')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.openejb.jpa.integration')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.openejb.tomcat.factory')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.openwebbeans.initialiser')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.security')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.security.openejb.classloading.hook')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.security.valve')
    localPlugin project(':web:org.eclipse.virgo.web.enterprise.services.accessor')
    localPlugin project(':web:org.eclipse.virgo.web.servlet.adapter')
    localPlugin project(':web:org.eclipse.virgo.web.spring.integration')
    localPlugin project(':web:org.eclipse.virgo.web.war.deployer')

    // TODO - review if all those signedExternalPlugins are signed
    signedExternalPlugin group: "org.slf4j", name: "slf4j-api", version: slf4jVersion
    // exports package org.apache.commons.logging (jcl - Jakarta Commons Logging)
    signedExternalPlugin group: "org.slf4j", name: "slf4j-jcl", version: slf4jVersion
    signedExternalPlugin group: "org.slf4j", name: "slf4j-log4j12", version: slf4jVersion
    signedExternalPlugin group: "org.slf4j", name: "jul-to-slf4j", version: slf4jVersion

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.aspectj.weaver", version: aspectjVersion, ext: "jar"

    // TODO - rename feature to region'_'
    localFeature project(':org.eclipse.virgo.site:org.eclipse.equinox.regions')
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.region", version: equinoxRegionVersion, configuration: "compile", ext: "jar"

    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.core')
    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.ds')
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.osgi", version: equinoxVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.osgi.services", version: osgiServicesVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.common", version: equinoxCommonVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.ds", version: equinoxDsVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.event", version: equinoxEventVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.util", version: equinoxUtilVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.cm", version: equinoxCmVersion, configuration: "compile", ext: "jar"

    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.kernel')

    localFeature project(':org.eclipse.virgo.site:org.eclipse.equinox.http.jetty')
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.http.jetty", version: equinoxHttpJettyVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.http.servlet", version: equinoxHttpServletVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.jetty.continuation", version: jettyVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.jetty.http", version: jettyVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.jetty.io", version: jettyVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.jetty.security", version: jettyVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.jetty.server", version: jettyVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.jetty.servlet", version: jettyVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.jetty.util", version: jettyVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.servlet", version: javaxServletVersion, configuration: "runtime", ext: "jar"

    localFeature project(':org.eclipse.virgo.site:org.eclipse.rap')
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.rap.rwt", version: rapRwtVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.rap.rwt.osgi", version: rapRwtOsgiVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.core.commands", version: eclipseCoreCommandsVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.rap.jface", version: rapJfaceVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "com.ibm.icu.base", version: icuBaseVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.core.databinding", version: eclipseCoreDatabindingVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.core.databinding.property", version: eclipseCoreDatabindingPropertyVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.core.databinding.observable", version: eclipseCoreDatabindingObservableVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.rap.jface.databinding", version: rapJfaceDatabindingVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.rap.ui", version: rapUiVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.servlet", version: javaxServletVersion, configuration: "runtime", ext: "jar"

    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.kernel.springintegration')
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.springframework.expression", version: springframeworkVersion, ext: "jar"

    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.management')
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "osgi.enterprise", version: osgiEnterpriseVersion, configuration: "compile", ext: "jar" // contains org.osgi.jmx
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.gemini.management", version: geminiManagementVersion, configuration: "compile", ext: "jar"

    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.medic')
    signedExternalPlugin group: "ch.qos.logback", name: "logback-core", version: logbackVersion
    signedExternalPlugin group: "ch.qos.logback", name: "logback-classic", version: logbackVersion

    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.nano.deployer')
    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.nano.mbeans')
    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.nano.mbeans.controller')

    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.shell')
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.console", version: equinoxConsoleVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.console.ssh", version: equinoxConsoleSshVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.mina.core", version: minaCoreVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.sshd.core", version: apacheSshdCoreVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.felix.gogo.command", version: gogoCommandVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.felix.gogo.runtime", version: gogoRuntimeVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.felix.gogo.shell", version: gogoShellVersion, configuration: "compile", ext: "jar"

    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.simpleconfigurator')
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.simpleconfigurator", version: equinoxSimpleConfiguratorVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.simpleconfigurator.manipulator", version: equinoxSimpleConfiguratorManipulatorVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.frameworkadmin", version: equinoxFrameworkadminVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.frameworkadmin.equinox", version: equinoxFrameworkadminEquinoxVersion, configuration: "compile", ext: "jar"

    // TODO - rename feature to org.eclipse.gemini.blueprint
    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.springdm')
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "oevm.org.aopalliance", version: orgAopAllianceVersion, ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.springframework.aop", version: springframeworkVersion, ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.springframework.beans", version: springframeworkVersion, ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.springframework.context", version: springframeworkVersion, ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.springframework.core", version: springframeworkVersion, ext: "jar"
    signedExternalPlugin group: "org.eclipse.gemini.blueprint", name: "gemini-blueprint-io", version: geminiBlueprintVersion, ext: "jar"
    signedExternalPlugin group: "org.eclipse.gemini.blueprint", name: "gemini-blueprint-core", version: geminiBlueprintVersion, ext: "jar"
    signedExternalPlugin group: "org.eclipse.gemini.blueprint", name: "gemini-blueprint-extender", version: geminiBlueprintVersion, ext: "jar"

    // nano base
    // TODO - merge to oev.nano.services ?
    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.services.concurrent')
    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.services.ds')

    // TODO - merge with management features above?
    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.webconsole.deps')

    signedExternalPlugin group: "commons-fileupload", name: "commons-fileupload", version: commonsFileuploadVersion, ext: "jar"
    signedExternalPlugin group: "commons-io", name: "commons-io", version: commonsIoVersion, ext: "jar"
    signedExternalPlugin group: "org.jolokia", name: "jolokia-osgi", version: jolokiaVersion, ext: "jar"

    // nano full
    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.p2.provisioning')
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.core.contenttype", version: eclipseCoreContenttypeVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.core.jobs", version: eclipseCoreJobsVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.core.net", version: eclipseCoreNetVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.core.runtime", version: eclipseCoreRuntimeVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.ecf", version: eclipseEcfVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.ecf.filetransfer", version: eclipseEcfFiletransferVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.ecf.identity", version: eclipseEcfIdentityVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.ecf.provider.filetransfer", version: eclipseEcfProviderFiletransferVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.ecf.ssl", version: eclipseEcfSslVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.app", version: equinoxAppVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.preferences", version: equinoxPreferencesVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.registry", version: equinoxRegistryVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.security", version: equinoxSecurityVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.sat4j.core", version: sat4jCoreVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.sat4j.pb", version: sat4jPbVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.artifact.repository", version: p2ArtifactRepositoryVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.console", version: p2ConsoleVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.core", version: p2CoreVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.director", version: p2DirectorVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.engine", version: p2EngineVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.garbagecollector", version: p2GarbageCollectorVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.jarprocessor", version: p2JarProcessorVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.metadata", version: p2MetadataVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.metadata.repository", version: p2MetadataRepositoryVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.publisher", version: p2PublisherVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.publisher.eclipse", version: p2PublisherEclipseVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.repository", version: p2RepositoryVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.touchpoint.eclipse", version: p2TouchpointEclipseVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.touchpoint.natives", version: p2TouchpointNativesVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.p2.transport.ecf", version: p2TransportEcfVersion, configuration: "compile", ext: "jar"

    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.nano.war.deployer')
    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.enterprise')
    localFeature project(':org.eclipse.virgo.site:org.eclipse.gemini.web')
    signedExternalPlugin group: "org.eclipse.gemini", name: "org.eclipse.gemini.web.core", version: geminiWebVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.gemini", name: "org.eclipse.gemini.web.extender", version: geminiWebVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.gemini", name: "org.eclipse.gemini.web.tomcat", version: geminiWebVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.gemini", name: "org.eclipse.gemini.web.jaspic.fragment", version: geminiWebVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.log4j", version: apacheLog4jVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.objectweb.asm", version: objectwebAsmVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javassist", version: javassistVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "scannotation", version: scannotationVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.bval", version: apacheBvalVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.quartz", version: quartzVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.ow2.jotm.jotm-core", version: jotmVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "javax.interceptor", name: "javax.interceptor-api", version: javaxInterceptorVersion
    signedExternalPlugin group: "javax.transaction", name: "javax.transaction-api", version: javaxTransactionVersion
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.annotation", version: javaxAnnotationVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.ejb", version: javaxEjbVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.inject", version: javaxInjectVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.jms", version: javaxJmsVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.persistence", version: javaxPersistenceVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.resource", version: javaxResourceVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.security.auth.message", version: javaxSecurityAuthMessageVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.security.jacc", version: javaxSecurityJaccVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "javax.servlet.jsp.jstl", name: "javax.servlet.jsp.jstl-api", version: javaxServletJspJstlApiVersion
    signedExternalPlugin group: "org.glassfish.web", name: "javax.servlet.jsp.jstl", version: javaxServletJspJstlImplVersion
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.validation", version: javaxValidationVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.wsdl", version: javaxWsdlVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.ws.rs", version: javaxWsRsVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.glassfish.javax.faces", version: glassfishJavaxFacesVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.glassfish.com.sun.faces", version: glassfishComSunFacesVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.geronimo.components.connector", version: geronimoComponentsConnectorVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.geronimo.components.transaction", version: geronimoComponentsTransactionVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.geronimo.specs.j2ee.management", version: geronimoSpecsJ2eeManagementVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.geronimo.specs.osgi.locator", version: geronimoSpecsOsgiLocatorVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.geronimo.specs.osgi.registry", version: geronimoSpecsOsgiRegistryVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.commons.beanutils", version: commonsBeanutilsVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "oevm.org.apache.commons.cli", version: commonsCliVersion, ext: "jar"
    signedExternalPlugin group: "commons-collections", name: "commons-collections", version: commonsCollectionsVersion
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.commons.lang", version: commonsLangVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.commons.dbcp", version: commonsDbcpVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.commons.pool", version: commonsPoolVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "cdi.api", version: cdiApiVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openejb.api", version: apacheOpenejbVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openejb.core", version: apacheOpenejbCoreVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openejb.javaagent", version: apacheOpenejbVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openejb.jee", version: apacheOpenejbVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openejb.loader", version: apacheOpenejbVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openejb.jpa-integration", version: apacheOpenejbVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openwebbeans.ee", version: apacheOpenwebbeansEEVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openwebbeans.ee.common", version: apacheOpenwebbeansVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openwebbeans.ejb", version: apacheOpenwebbeansEEVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openwebbeans.impl", version: apacheOpenwebbeansVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openwebbeans.jsf", version: apacheOpenwebbeansVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openwebbeans.spi", version: apacheOpenwebbeansVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openwebbeans.tomcat7", version: apacheOpenwebbeansTomcat7Version, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.openwebbeans.web", version: apacheOpenwebbeansVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.xbean.asm", version: apacheXBeanAsmVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.xbean.bundleutils", version: apacheXBeanBundleutilsVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.xbean.finder", version: apacheXBeanFinderVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.xbean.naming", version: apacheXBeanNamingVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.xbean.reflect", version: apacheXBeanReflectVersion, configuration: "compile", ext: "jar"

    // Tomcat Runtime
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.el", version: javaxElVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "com.sun.mail", name: "javax.mail", version: javaxMailVersion
    // TODO - check CQ and put version into properties
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.activation", version: '1.1.0.v201211130549', configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.servlet.jsp", version: javaxServletJspVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.websocket", version: javaxWebsocketVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "javax.xml.rpc", version: javaxXmlRpcVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.catalina", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.catalina.ha", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.catalina.tribes", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.coyote", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.el", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.jasper", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.juli", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.tomcat.api", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.tomcat.util", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.tomcat.jni", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.tomcat.websocket", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.jdt.core.compiler.batch", version: eclipseJdtCoreCompilerBatchVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.persistence.antlr", version: eclipsePersistenceAntlrVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.persistence.asm", version: eclipsePersistenceAsmVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.persistence.core", version: eclipsePersistenceCoreVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.persistence.jpa", version: eclipsePersistenceJpaVersion, configuration: "compile", ext: "jar"
    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.eclipse.persistence.jpa.jpql", version: eclipsePersistenceJpaJpqlVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin group: "org.eclipse.virgo.mirrored", name: "org.apache.derby", version: apacheDerbyVersion, configuration: "compile", ext: "jar"

    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.appdeployer')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.applistener')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.catalina.fragment.webbeans')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.javax.persistence.extension')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.javax.persistence.provider.initializer')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.jsf.support')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.openejb.fragment.bval')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.openejb.fragment.jotm')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.openejb.fragment.jpa')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.openejb.fragment.webbeans')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.openejb.initialiser')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.openejb.tomcat.factory')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.openwebbeans.initialiser')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.security')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.security.openejb.classloading.hook')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.security.valve')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.enterprise.services.accessor')
    signedExternalPlugin project(':web:org.eclipse.virgo.web.war.deployer')

    localFeature project(':org.eclipse.virgo.site:org.eclipse.virgo.tools')
}

task zipUpdateSite(type: Zip, dependsOn : createP2Repository) {
    from "${buildDir}/repository"
    baseName 'repository'
}

task uploadUpdateSite(dependsOn : createP2Repository) {
    description = "Uploads the generated update site to the eclipse.org server."

    doLast {
        // folder structure
        // releases                    (main folder - composite update site if release repository)
        //  |--1.0                     (version folder - always a composite update site)
        //     |--1.0.0.v20150413-1512 (repository folder - simple update site)

        // define the folder structure
        def releaseTypeFolder = "${ECLIPSE_ORG_FTP_UPDATE_SITES_PATH}/${releaseTypeFolder(project)}"
        def versionFolder = "${releaseTypeFolder}/${releaseVersion()}"
        def repositoryFolder = "${versionFolder}/${project.version}"

        // create composite update site for the root of the release repository and for the versions folder
        def config = eclipsebuild.BuildshipConfig.on(project)
        def compositeFolders = config.isRelease() ? [
            releaseTypeFolder,
            versionFolder
        ]: [versionFolder]

        // upload the update site and update the composite descriptors
        ssh.run {
            session(remotes.eclipseDotOrg) {
                // create the leaf directory if not exist
                execute "mkdir -p $repositoryFolder"

                // copy the update site from the build directory to the remote location
                put from: files { file("$buildDir/repository").listFiles() }, into: repositoryFolder

                // recreate the compositeArtifacts.jar and the compositeContent.jar files
                compositeFolders.each { execute("""cd ${it}
                      ${file('updateCompositeUpdateSite.sh').text}""") }
            }
        }
    }
}

// utility methods
def releaseTypeFolder(Project project) {
    def config = eclipsebuild.BuildshipConfig.on(project)
    if(config.isRelease()) {
        "releases"
    } else if(config.isMilestone()){
        "milestones"
    } else if(config.isSnapshot()) {
        "snapshots"
    } else {
        throw new IllegalStateException("BuildshipConfig must either be a release, milestone, or snapshot.")
    }
}

def releaseVersion() {
    // crop the major.minor segment from the version number
    def matcher = version =~ /(\d+\.\d+)\.\d+\..*/
    matcher[0][1]
}

private void postProcessing(project) {
}

private void signByEclipseService(unsignedFolder, signedFolder) {
    ssh.run {
        session(remotes.eclipseDotOrg) {
            // the remote folder where the jars are signed
            def remoteFolder = "${ECLIPSE_ORG_TEMP_PATH}/${signedFolder.name}"

            // clean up the folder used for signing if the previous build failed
            execute """rm -rf $remoteFolder
                    mkdir -p $remoteFolder"""

            // transfer the unsigned files to the remote host
            put from: file(unsignedFolder).listFiles() as List, into: remoteFolder

            // perform the signing
            execute """ cd $remoteFolder
                    # iterate all jars in the subfolders
                    for jar in \$(find `pwd` -name '*.jar');
                    do
                        # save the signed jar into a temporary file copy and write it's content to the unsigned jar
                        curl -o signed.jar -F filedata=@\$jar http://build.eclipse.org:31338/sign
                        cp signed.jar \$jar
                        rm signed.jar
                    done
                    """

            // retrieve the signed content from the remote host into the build/signed-bundles folder
            get from: remoteFolder, into: signedFolder.parentFile

            // clean up the remote folder
            execute "rm -rf $remoteFolder"
        }
    }
}

private void signLocally(File unsignedFolder, File signedFolder) {
    def unsignedPluginsDir = new File(unsignedFolder, "plugins")
    def unsignedFeaturesDir = new File(unsignedFolder, "features")
    def signedPluginsDir = new File(signedFolder, "plugins")
    def signedFeaturesDir = new File(signedFolder, "features")

    signedPluginsDir.mkdirs()
    signedFeaturesDir.mkdirs()

    if (System.properties['skip.local.signing'] == 'true') {
        project.logger.warn("Skipping local signing process!")
        project.copy { from unsignedPluginsDir into signedPluginsDir }
        project.copy { from unsignedFeaturesDir into signedFeaturesDir }
    }

    // TODO - add assert "keystore exists" - otherwise print this help!
    // How to generate you own Java Key Store for local signing:
    // $ keytool -genkey -alias virgo -keystore virgo.jks -storepass changeme -keypass development -dname "cn=Florian Waibel, ou=Virgo, o=EclipseSource, c=DE" -validity 365
    // Verify the keystore on the command line:
    // $ jarsigner -keystore virgo.jks -storepass changeme -keypass development org.eclipse.virgo.util.env-3.7.0.M2.jar virgo
    // $ jarsigner -verify -verbose -certs org.eclipse.virgo.util.env-3.7.0.M2.jar
    File targetDir = signedPluginsDir
    def signBundle = {
        if (System.properties['skip.local.signing'] != 'true') {
            project.logger.info("Sign '${it.absolutePath}'")
            project.ant.signjar(
                    verbose: 'true',
                    destDir: targetDir,
                    alias: 'virgo',
                    jar: it,
                    keystore: project.findProject(':').file('config/signing/virgo.jks'),
                    storepass: 'changeme',
                    keypass: 'development',
                    sigalg: 'SHA1withDSA',
                    digestalg: 'SHA1',
                    preservelastmodified: 'true')
        }
    }

    unsignedPluginsDir.listFiles().each signBundle
    targetDir = signedFeaturesDir
    unsignedFeaturesDir.listFiles().each signBundle
}

private void addExtraPropertiesToArtifactsXml(Node artifactsXml) {
    // modify the artifacts.xml file only when it is deployed to the eclipse.org servers
    if (ECLIPSE_ORG_MIRROR_PATH) {
        // add p2.mirrorsUrl to the properties section
        // https://wiki.eclipse.org/Equinox/p2/p2.mirrorsURL
        def mainPropertiesNode = artifactsXml.depthFirst().find { it.parent()?.name() == 'repository' && it.name() == 'properties' }
        new Node(mainPropertiesNode, 'property', ['name': 'p2.mirrorsURL', 'value': calculateP2MirrorsUrl(project)] )

        // add download.stats property to each installable unit
        // https://wiki.eclipse.org/Equinox_p2_download_stats#Enabling_stats_in_your_repository
        new Node(mainPropertiesNode, 'property', ['name': 'p2.statsURI', 'value': calculateStatsUri(project)])
        mainPropertiesNode.@size = mainPropertiesNode.children().size()

        // add <property name="download.stats" value="feature-id"/> node to the features
        artifactsXml.depthFirst().findAll {
            it.parent()?.parent()?.name() == 'artifacts' &&
                    it.parent()?.name() == 'artifact' &&
                    it.parent()?.@classifier == 'org.eclipse.update.feature' &&
                    it.name() == 'properties'
        }.each {
            new Node(it, 'property', ['name': 'download.stats', 'value': it.parent().@id ] )
            it.@size = it.children().size()
        }
    }
}

def calculateP2MirrorsUrl(Project project) {
    def repositoryPath = "${ECLIPSE_ORG_MIRROR_PATH}/${releaseTypeFolder(project)}/${releaseVersion()}/${project.version}"
    "http://www.eclipse.org/downloads/download.php?file=${repositoryPath}&format=xml"
}

def calculateStatsUri(Project project) {
    "http://download.eclipse.org/stats/virgo/${releaseTypeFolder(project)}/${releaseVersion()}"
}

// TODO - think about a way to trigger :org.eclipse.virgo.site:publishBase and :org.eclipse.virgo.site:publishKernelBase after site creation
project.tasks.addRule("Pattern: publish<ID>") { String taskName ->
    if (taskName.startsWith("publish")) {
        project.task (taskName, dependsOn: [
            ":org.eclipse.virgo.site:${CREATE_P2_REPOSITORY_TASK_NAME}",
        ]) {
            def product = 'undefined'
            switch (taskName.toString() - 'publish') {
                case 'Base': product = 'base'; break
                case 'KernelBase': product = 'kernel-base'; break
                case 'NanoCore': product = 'nano-core'; break
                case 'NanoBase': product = 'nano-base'; break
                case 'Nano': product = 'nano'; break
                case 'NanoFull': product = 'nano-full'; break
            }
            group = Constants.gradleTaskGroupName
            description = "Publishes a product to a p2 repository. The publishing uses ANY environment configurations."

            // TODO rework to something like createP2repository.outputs.repository?
            // File repositoryDir = file(project.rootProject.tasks[":org.eclipse.virgo.site:${CREATE_P2_REPOSITORY_TASK_NAME}"].buildDir + "/repository/")
            File repositoryDir = project.file("${project.rootProject.projectDir}/org.eclipse.virgo.site/build/repository/")
            File productFileLocation = project.file("${project.projectDir}/publish_resources/products/${product}/${product}.product")
            File javaProfileLocation = project.file("${project.projectDir}/src/main/dist/configuration/java-server.profile")

            inputs.dir repositoryDir
            inputs.file productFileLocation
            inputs.file javaProfileLocation

            doLast { publishProduct(project, repositoryDir, productFileLocation, javaProfileLocation) }
        }
    }
}

// for testing purposes only
task ('installProductNanoBase', dependsOn: [
    'publishNanoCore',
    'publishNanoBase'
]) {

    description = "Installs a Virgo product to a desired destination. Default profile(roaming) is VIRGOProfile, the environment cofigurations are ANY."

    def product = 'nano-base'
    def shortProduct = 'VNB'
    def destinationDir = file("${buildDir}/${shortProduct}/${product}")
    def productIu = "${product}.product"

    doLast() { installProduct(project, productIu, destinationDir) }
}

// for testing purposes only
task ('installProductNano', dependsOn: [
    'publishNanoCore',
    'publishNanoBase',
    'publishNano',
]) {

    description = "Installs a Virgo product to a desired destination. Default profile(roaming) is VIRGOProfile, the environment cofigurations are ANY."

    def product = 'nano'
    def shortProduct = 'VN'
    def destinationDir = file("${buildDir}/${shortProduct}/${product}")
    def productIu = "${product}.product"

    doLast() { installProduct(project, productIu, destinationDir) }
}

// for testing purposes only
task ('installProductNanoFull', dependsOn: [
    'publishNanoCore',
    'publishNanoBase',
    'publishNano',
    'publishNanoFull',
]) {

    description = "Installs a Virgo product to a desired destination. Default profile(roaming) is VIRGOProfile, the environment cofigurations are ANY."

    def product = 'nano-full'
    def shortProduct = 'VNF'
    def destinationDir = file("${buildDir}/${shortProduct}/${product}")
    def productIu = "${product}.product"

    doLast() { installProduct(project, productIu, destinationDir) }
}
