// ------------------------------------------------------------------------------------------------
// Sling downloads page
// http://www.apache.org/dev/release-download-pages.html explains how the apache.org mirrored
// downloads page work. Basically, we provide a downloads.html page with a few placeholders
// and a form to select the download mirrog, and a downloads.cgi page which wraps the apache.org
// download logic CGI.
//
// To test this page in a local build, open http://localhost:8820/downloads.html - the navigation
// link points to the .cgi variant which doesn't work locally.
// ------------------------------------------------------------------------------------------------

// ------------------------------------------------------------------------------------------------
// Downloads template data
// The page template itself is found below.
// To convert from the old svn downloads.list ust
//    while read l; do echo "  \"$l\","; done < content/downloads.list
// ------------------------------------------------------------------------------------------------
U = new includes.U(config)
def PIPE_SEP = "\\|"
def starterVersion="12"

def slingIDETooling=[
  "Sling IDE Tooling for Eclipse|eclipse|1.2.2|A p2 update site which can be installed in Eclipse.|sling-ide-tooling"
]

def slingApplication=[
  "Sling Starter Feature Archive (Oak-Tar)|A self-container feature archive, for experimenting and learning. Requires the Feature Model Launcher (see below) |org.apache.sling.starter|-oak_mongo_far.far|${starterVersion}|Y|apache/sling:${starterVersion}",
  "Sling Starter Feature Archive (Oak-Mongo)|A self-container feature archive, for experimenting and learning. Requires the Feature Model Launcher (see below) |org.apache.sling.starter|-oak_tar_far.far|${starterVersion}|Y|apache/sling:${starterVersion}",
  "Sling Starter Source Release|The released Sling Starter source code|org.apache.sling.starter|-source-release.zip|${starterVersion}|Y",
  "Sling CMS App|A reference CMS App built on Apache Sling|org.apache.sling.cms.feature|.jar|1.1.0|org.apache.sling.app.cms",
  "Sling Feature Model Launcher|A tool for launching OSGi applications|org.apache.sling.feature.launcher|.zip|1.2.0|Y",
  "Sling Feature Model converter|A CLI tool for converting from content packages to feature model files|org.apache.sling.feature.cpconverter|.zip|1.1.14|Y",
]

def mavenPlugins=[
  "JSPC Maven Plugin|jspc-maven-plugin|2.3.4|Y",
  "Maven Launchpad Plugin|maven-launchpad-plugin|2.3.4|Y",
  "Scripting Bundle Maven Plugin|scriptingbundle-maven-plugin|0.5.0|Y",
  "Sling Maven Plugin|sling-maven-plugin|2.4.2|Y",
  "Sling Feature Maven Plugin|slingfeature-maven-plugin|1.6.4|Y",
  "Sling Feature Converter Maven Plugin|sling-feature-converter-maven-plugin|1.0.4|Y",
  "Sling Feature Launcher Maven Plugin|sling-feature-launcher-maven-plugin|0.1.2|Y",
  "Slingstart Maven Plugin|slingstart-maven-plugin|1.9.12|Y",
  "HTL Maven Plugin|htl-maven-plugin|2.0.4-1.4.0|Y",
  "Sling Kickstart Maven Plugin|sling-kickstart-maven-plugin|0.0.8|Y",
]

def bndPlugins=[
  "Context-Aware Configuration bnd Plugin|org.apache.sling.caconfig.bnd-plugin|1.0.2|Y",
  "Models bnd Plugin|org.apache.sling.bnd.models|1.0.0|Y",
  "bnd Remove Parameters from OSGi Headers Plugin|org.apache.sling.bnd.plugin.headers.parameters.remove|1.0.0|Y",
  "Scripting Bundle (Maven) Plugin 0.4.0|scriptingbundle-maven-plugin|0.4.0|Y"
]

def bundles=[
  "Adapter|org.apache.sling.adapter|2.2.0|Y|jar",
  "Adapter Annotations (JSON) 1.x|adapter-annotations|1.0.0|Y|jar",
  "Adapter Annotations 2.x|org.apache.sling.adapter.annotations|2.0.0|Y|jar",
  "API|org.apache.sling.api|2.25.0|Y|jar",
  "Auth Core|org.apache.sling.auth.core|1.5.6|Y|jar",
  "Form Based Authentication|org.apache.sling.auth.form|1.0.24|Y|jar",
  "Authentication XING API|org.apache.sling.auth.xing.api|0.0.2|Y|jar",
  "Authentication XING Login|org.apache.sling.auth.xing.login|0.0.2|Y|jar",
  "Authentication XING OAuth|org.apache.sling.auth.xing.oauth|0.0.2|Y|jar",
  "Bundle Resource Provider|org.apache.sling.bundleresource.impl|2.3.4|Y|jar",
  "Capabilities|org.apache.sling.capabilities|0.1.2|Y|jar",
  "Capabilities JCR|org.apache.sling.capabilities.jcr|0.1.2|Y|jar",
  "Clam|org.apache.sling.clam|1.1.0|Y|jar",
  "Classloader Leak Detector|org.apache.sling.extensions.classloader-leak-detector|1.0.0|Y|jar",
  "CMS App API|org.apache.sling.cms.api|1.1.0|org.apache.sling.app.cms|jar",
  "CMS App Archetype|org.apache.sling.cms.archetype|1.1.0|org.apache.sling.app.cms|jar",
  "CMS App Core|org.apache.sling.cms.core|1.1.0|org.apache.sling.app.cms|jar",
  "CMS App Integration Tests|org.apache.sling.cms.it|1.1.0|org.apache.sling.app.cms|jar",
  "CMS App Login|org.apache.sling.cms.login|1.1.0|org.apache.sling.app.cms|jar",
  "CMS App Reference|org.apache.sling.cms.reference|1.1.0|org.apache.sling.app.cms|jar",
  "CMS App Transformer|org.apache.sling.cms.transformer|1.1.0|org.apache.sling.app.cms|jar",
  "CMS App UI|org.apache.sling.cms.ui|1.1.0|org.apache.sling.app.cms|jar",
  "Commons Classloader|org.apache.sling.commons.classloader|1.4.4|Y|jar",
  "Commons Clam|org.apache.sling.commons.clam|2.0.0|Y|jar",
  "Commons Compiler|org.apache.sling.commons.compiler|2.4.0|Y|jar",
  "Commons Content Analyzing|org.apache.sling.commons.content.analyzing|1.0.0|Y|jar",
  "Commons Content Processing|org.apache.sling.commons.content.processing|1.0.0|Y|jar",
  "Commons Crypto|org.apache.sling.commons.crypto|1.1.0|Y|jar",
  "Commons FileSystem ClassLoader|org.apache.sling.commons.fsclassloader|1.0.8|Y|jar",
  "Commons HTML|org.apache.sling.commons.html|1.1.0|Y|jar",
  "Commons Johnzon|org.apache.sling.commons.johnzon|1.2.6|Y|jar",
  "Commons Log|org.apache.sling.commons.log|5.4.0|Y|jar",
  "Commons Log WebConsole Plugin|org.apache.sling.commons.log.webconsole|1.0.0|Y|jar",
  "Commons Log Service|org.apache.sling.commons.logservice|1.1.0|Y|jar",
  "Commons Messaging|org.apache.sling.commons.messaging|1.0.2|Y|jar",
  "Commons Messaging Mail|org.apache.sling.commons.messaging.mail|2.0.0|Y|jar",
  "Commons Metrics|org.apache.sling.commons.metrics|1.2.10|Y|jar",
  "Commons Metrics RRD4J|org.apache.sling.commons.metrics-rrd4j|1.0.6|Y|jar",
  "Commons Mime Type Service|org.apache.sling.commons.mime|2.2.2|Y|jar",
  "Commons OSGi|org.apache.sling.commons.osgi|2.4.2|Y|jar",
  "Commons Scheduler|org.apache.sling.commons.scheduler|2.7.2|Y|jar",
  "Commons Testing|org.apache.sling.commons.testing|2.1.2|Y|jar",
  "Commons Threads|org.apache.sling.commons.threads|3.2.22|Y|jar",
  "Connection Timeout Agent|org.apache.sling.connection-timeout-agent|1.0.2|Y|jar",
  "Content Detection Support|org.apache.sling.commons.contentdetection|1.0.4|Y|jar",
  "Content Parser API|org.apache.sling.contentparser.api|2.0.0|Y|jar",
  "Content Parser JSON|org.apache.sling.contentparser.json|2.0.0|Y|jar",
  "Content Parser XML|org.apache.sling.contentparser.xml|2.0.0|Y|jar",
  "Content Parser XML JCR|org.apache.sling.contentparser.xml-jcr|2.0.0|Y|jar",
  "Content Parser Test Utilities|org.apache.sling.contentparser.testutils|2.0.0|Y|jar",
  "Context-Aware Configuration API|org.apache.sling.caconfig.api|1.3.0|Y|jar",
  "Context-Aware Configuration Impl|org.apache.sling.caconfig.impl|1.6.0|Y|jar",
  "Context-Aware Configuration Mock Plugin|org.apache.sling.testing.caconfig-mock-plugin|1.4.0|Y|jar",
  "Context-Aware Configuration SPI|org.apache.sling.caconfig.spi|1.4.0|Y|jar",
  "Crankstart API|org.apache.sling.crankstart.api|1.0.0|N|jar",
  "Crankstart API Fragment|org.apache.sling.crankstart.api.fragment|1.0.2|N|jar",
  "Crankstart Core|org.apache.sling.crankstart.core|1.0.0|N|jar",
  "Crankstart Launcher|org.apache.sling.crankstart.launcher|1.0.0|Y|jar",
  "Crankstart Launcher Sling Extensions|org.apache.sling.crankstart.sling.extensions|1.0.0|Y|jar",
  "Crankstart Launcher Test Services|org.apache.sling.crankstart.test.services|1.0.0|Y|jar",
  "DataSource Provider|org.apache.sling.datasource|1.0.4|Y|jar",
  "Discovery API|org.apache.sling.discovery.api|1.0.4|Y|jar",
  "Discovery Impl|org.apache.sling.discovery.impl|1.2.12|Y|jar",
  "Discovery Commons|org.apache.sling.discovery.commons|1.0.26|Y|jar",
  "Discovery Base|org.apache.sling.discovery.base|2.0.12|Y|jar",
  "Discovery Oak|org.apache.sling.discovery.oak|1.2.36|Y|jar",
  "Discovery Standalone|org.apache.sling.discovery.standalone|1.0.2|Y|jar",
  "Discovery Support|org.apache.sling.discovery.support|1.0.6|Y|jar",
  "Distributed Event Admin|org.apache.sling.event.dea|1.1.4|Y|jar",
  "Distribution API|org.apache.sling.distribution.api|0.7.0|Y|jar",
  "Distribution Core|org.apache.sling.distribution.core|0.5.0|Y|jar",
  "Distribution Integration Tests|org.apache.sling.distribution.it|0.1.2|Y|jar",
  "Distribution Sample|org.apache.sling.distribution.sample|0.1.6|Y|jar",
  "Distribution Journal Core|org.apache.sling.distribution.journal|0.1.24|Y|jar",
  "Distribution Journal Messages|org.apache.sling.distribution.journal.messages|0.5.0|Y|jar",
  "Distribution Journal Kafka|org.apache.sling.distribution.journal.kafka|0.3.0|Y|jar",
  "Distribution Journal ITs|org.apache.sling.distribution.journal.it|0.1.2|Y|jar",
  "Dynamic Include|org.apache.sling.dynamic-include|3.3.0|Y|jar",
  "Engine|org.apache.sling.engine|2.9.0|Y|jar",
  "Event|org.apache.sling.event|4.3.0|Y|jar",
  "Event API|org.apache.sling.event.api|1.0.0|Y|jar",
  "Feature Model|org.apache.sling.feature|1.2.30|Y|jar",
  "Feature Model Analyser|org.apache.sling.feature.analyser|1.6.4|Y|jar",
  "Feature Model Converter|org.apache.sling.feature.modelconverter|1.0.14|Y|jar",
  "Feature Model Content Package Converter|org.apache.sling.feature.cpconverter|1.1.4|Y|jar",
  "Feature Model Extension API Regions|org.apache.sling.feature.extension.apiregions|1.5.0|Y|jar",
  "Feature Flags|org.apache.sling.featureflags|1.2.2|Y|jar",
  "File Optimization|org.apache.sling.fileoptim|0.9.2|org.apache.sling.file.optimization|jar",
  "File System Resource Provider|org.apache.sling.fsresource|2.2.0|Y|jar",
  "GraphQL Core|org.apache.sling.graphql.core|0.0.12|Y|jar",
  "I18n|org.apache.sling.i18n|2.5.18|Y|jar",
  "HApi|org.apache.sling.hapi|1.1.0|Y|jar",
  "Health Check API|org.apache.sling.hc.api|1.0.4|Y|jar",
  "Health Check Support|org.apache.sling.hc.support|1.0.6|Y|jar",
  "Health Check JUnit Bridge|org.apache.sling.hc.junit.bridge|1.0.2|Y|jar",
  "Installer Core|org.apache.sling.installer.core|3.12.0|Y|jar",
  "Installer Configuration Support|org.apache.sling.installer.factory.configuration|1.4.2|Y|jar",
  "Installer Console|org.apache.sling.installer.console|1.1.0|Y|jar",
  "Installer Content Package Support|org.apache.sling.installer.factory.packages|1.0.4|Y|jar",
  "Installer Factory Feature Model|org.apache.sling.installer.factory.feature|0.7.0|Y|jar",
  "Installer File Provider|org.apache.sling.installer.provider.file|1.3.4|Y|jar",
  "Installer Health Checks|org.apache.sling.installer.hc|2.0.2|Y|jar",
  "Installer JCR Provider|org.apache.sling.installer.provider.jcr|3.3.0|Y|jar",
  "Installer Vault Package Install Hook|org.apache.sling.installer.provider.installhook|1.0.4|Y|jar",
  "javax activation|org.apache.sling.javax.activation|0.3.0|Y|jar",
  "JCR API|org.apache.sling.jcr.api|2.4.0|Y|jar",
  "JCR API Wrapper|org.apache.sling.jcr.jcr-wrapper|2.0.0|Y|jar",
  "JCR Base|org.apache.sling.jcr.base|3.1.8|Y|jar",
  "JCR ClassLoader|org.apache.sling.jcr.classloader|3.2.4|Y|jar",
  "JCR Content Loader|org.apache.sling.jcr.contentloader|2.5.0|Y|jar",
  "JCR Content Parser|org.apache.sling.jcr.contentparser|1.2.8|Y|jar",
  "JCR DavEx|org.apache.sling.jcr.davex|1.3.10|Y|jar",
  "JCR Jackrabbit AccessManager|org.apache.sling.jcr.jackrabbit.accessmanager|3.0.10|Y|jar",
  "JCR Jackrabbit UserManager|org.apache.sling.jcr.jackrabbit.usermanager|2.2.20|Y|jar",
  "JCR Maintenance|org.apache.sling.jcr.maintenance|1.0.2|Y|jar",
  "JCR Oak Server|org.apache.sling.jcr.oak.server|1.2.10|Y|jar",
  "JCR Package Init|org.apache.sling.jcr.packageinit|1.0.4|Y|jar",
  "JCR Registration|org.apache.sling.jcr.registration|1.0.6|Y|jar",
  "JCR Resource|org.apache.sling.jcr.resource|3.2.0|Y|jar",
  "JCR Resource Security|org.apache.sling.jcr.resourcesecurity|1.1.0|Y|jar",
  "JCR Web Console Plugin|org.apache.sling.jcr.webconsole|1.1.0|Y|jar",
  "JMX Resource Provider|org.apache.sling.jmx.provider|1.0.2|Y|jar",
  "JCR WebDAV|org.apache.sling.jcr.webdav|2.3.8|Y|jar",
  "JUnit Core|org.apache.sling.junit.core|1.1.6|Y|jar",
  "JUnit Remote Tests Runners|org.apache.sling.junit.remote|1.0.12|Y|jar",
  "JUnit Scriptable Tests Provider|org.apache.sling.junit.scriptable|1.0.12|Y|jar",
  "JUnit Tests Teleporter|org.apache.sling.junit.teleporter|1.0.22|Y|jar",
  "JUnit Health Checks|org.apache.sling.junit.healthcheck|1.0.6|Y|jar",
  "Kickstart Project|org.apache.sling.kickstart|0.0.12|Y|jar",
  "Launchpad API|org.apache.sling.launchpad.api|1.2.0|Y|jar",
  "Launchpad Base|org.apache.sling.launchpad.base|7.0.1-2.7.4|Y|jar",
  "Launchpad Base - Application Launcher|org.apache.sling.launchpad.base|7.0.1-2.7.4|Y|war",
  "Launchpad Base - Web Launcher|org.apache.sling.launchpad.base|7.0.1-2.7.4|Y|war",
  "Launchpad Installer|org.apache.sling.launchpad.installer|1.2.2|Y|jar",
  "Launchpad Integration Tests|org.apache.sling.launchpad.integration-tests|12|Y|jar",
  "Launchpad Test Fragment Bundle|org.apache.sling.launchpad.test-fragment|12|Y|jar",
  "Launchpad Test Bundles|org.apache.sling.launchpad.test-bundles|0.0.6|Y|jar",
  "Launchpad Testing|org.apache.sling.launchpad.testing|12|Y|jar",
  "Launchpad Testing WAR|org.apache.sling.launchpad.testing-war|11|Y|jar",
  "Launchpad Testing Services|org.apache.sling.launchpad.test-services|12|Y|jar",
  "Launchpad Testing Services WAR|org.apache.sling.launchpad.test-services-war|2.0.16|Y|war",
  "Log Tracer|org.apache.sling.tracer|1.0.6|Y|jar",
  "Models API|org.apache.sling.models.api|1.4.2|Y|jar",
  "Models Implementation|org.apache.sling.models.impl|1.5.2|Y|jar",
  "Models Jackson Exporter|org.apache.sling.models.jacksonexporter|1.1.2|Y|jar",
  "Models Validation Implementation|org.apache.sling.models.validation-impl|1.1.0|Y|jar",
  "Models Context-Aware Configuration|org.apache.sling.models.caconfig|1.0.0|Y|jar",
  "NoSQL Generic Resource Provider|org.apache.sling.nosql.generic|1.1.0|Y|jar",
  "NoSQL Couchbase Client|org.apache.sling.nosql.couchbase-client|1.0.2|Y|jar",
  "NoSQL Couchbase Resource Provider|org.apache.sling.nosql.couchbase-resourceprovider|1.1.0|Y|jar",
  "NoSQL MongoDB Resource Provider|org.apache.sling.nosql.mongodb-resourceprovider|1.1.0|Y|jar",
  "Oak Restrictions|org.apache.sling.oak.restrictions|1.0.2|Y|jar",
  "Pax Exam Utilities|org.apache.sling.paxexam.util|1.0.4|Y|jar",
  "Performance Test Utilities|org.apache.sling.performance.base|1.0.2|org.apache.sling.performance|jar",
  "Pipes|org.apache.sling.pipes|4.0.0|Y|jar",
  "Provisioning Model|org.apache.sling.provisioning.model|1.8.6|Y|jar",
  "Repoinit JCR|org.apache.sling.jcr.repoinit|1.1.38|Y|jar",
  "Repoinit Parser|org.apache.sling.repoinit.parser|1.6.14|Y|jar",
  "Resource Access Security|org.apache.sling.resourceaccesssecurity|1.1.0|Y|jar",
  "Resource Builder|org.apache.sling.resourcebuilder|1.0.4|Y|jar",
  "Resource Collection|org.apache.sling.resourcecollection|1.0.2|Y|jar",
  "Resource Filter|org.apache.sling.resource.filter|1.0.0|Y|jar",
  "Resource Inventory|org.apache.sling.resource.inventory|1.0.8|Y|jar",
  "Resource Merger|org.apache.sling.resourcemerger|1.4.0|Y|jar",
  "Resource Presence|org.apache.sling.resource.presence|0.0.2|Y|jar",
  "Resource Resolver|org.apache.sling.resourceresolver|1.8.4|Y|jar",
  "Rewriter|org.apache.sling.rewriter|1.3.2|Y|jar",
  "Failing Server-Side Tests|org.apache.sling.testing.samples.failingtests|1.0.6|N|jar",
  "SAML2 Service Provider|org.apache.sling.auth.saml2|0.2.6|Y|jar",
  "Sample Integration Tests|org.apache.sling.testing.samples.integrationtests|1.0.6|N|jar",
  "Sample Server-Side Tests|org.apache.sling.testing.samples.sampletests|1.0.6|N|jar",
  "Scripting API|org.apache.sling.scripting.api|2.2.0|Y|jar",
  "Scripting SPI|org.apache.sling.scripting.spi|1.0.4|Y|jar",
  "Scripting Bundle Tracker|org.apache.sling.scripting.bundle.tracler|0.1.0|Y|jar",
  "Scripting Console|org.apache.sling.scripting.console|1.0.0|Y|jar",
  "Scripting Core|org.apache.sling.scripting.core|2.4.6|Y|jar",
  "Scripting EL API Wrapper|org.apache.sling.scripting.el-api|1.0.4|Y|jar",
  "Scripting Java|org.apache.sling.scripting.java|2.1.6|Y|jar",
  "Scripting JavaScript|org.apache.sling.scripting.javascript|3.1.4|Y|jar",
  "Scripting JSP|org.apache.sling.scripting.jsp|2.5.4|Y|jar",
  "Scripting JSP API Wrapper|org.apache.sling.scripting.jsp-api|1.0.2|Y|jar",
  "Scripting JSP Taglib|org.apache.sling.scripting.jsp.taglib|2.4.0|Y|jar",
  "Scripting FreeMarker|org.apache.sling.scripting.freemarker|1.0.4|Y|jar",
  "Scripting Groovy|org.apache.sling.scripting.groovy|1.2.0|Y|jar",
  "Scripting HTL Runtime|org.apache.sling.scripting.sightly.runtime|1.2.6-1.4.0|Y|jar",
  "Scripting HTL Compiler|org.apache.sling.scripting.sightly.compiler|1.2.14-1.4.0|Y|jar",
  "Scripting HTL Java Compiler|org.apache.sling.scripting.sightly.compiler.java|1.2.2-1.4.0|Y|jar",
  "Scripting HTL Engine|org.apache.sling.scripting.sightly|1.4.18-1.4.0|Y|jar",
  "Scripting HTL JS Use Provider|org.apache.sling.scripting.sightly.js.provider|1.2.6|Y|jar",
  "Scripting HTL Sling Models Use Provider|org.apache.sling.scripting.sightly.models.provider|1.0.8|Y|jar",
  "Scripting HTL REPL|org.apache.sling.scripting.sightly.repl|1.0.10|Y|jar",
  "Scripting Thymeleaf|org.apache.sling.scripting.thymeleaf|2.0.2|Y|jar",
  "Security|org.apache.sling.security|1.1.24|Y|jar",
  "Service User Mapper|org.apache.sling.serviceusermapper|1.4.2|Y|jar",
  "Service User WebConsole|org.apache.sling.serviceuser.webconsole|1.0.2|Y|jar",
  "Servlet Annotations|org.apache.sling.servlets.annotations|1.2.6|Y|jar",
  "Servlet Helpers|org.apache.sling.servlet-helpers|1.4.2|Y|jar",
  "Servlets Get|org.apache.sling.servlets.get|2.1.40|Y|jar",
  "Servlets Post|org.apache.sling.servlets.post|2.5.0|Y|jar",
  "Servlets Resolver|org.apache.sling.servlets.resolver|2.9.4|Y|jar",
  "Settings|org.apache.sling.settings|1.4.2|Y|jar",
  "Sitemap|org.apache.sling.sitemap|1.0.6|Y|jar",
  "Slf4j MDC Filter|org.apache.sling.extensions.slf4j.mdc|1.0.0|Y|jar",
  "Sling Query|org.apache.sling.query|4.0.4|Y|jar",
  "Starter Content|org.apache.sling.starter.content|1.0.12|Y|jar",
  "Superimposing Resource Provider|org.apache.sling.superimposing|0.2.0|Y|jar",
  "System Bundle Extension: Activation API|org.apache.sling.fragment.activation|1.0.2|Y|jar",
  "System Bundle Extension: WS APIs|org.apache.sling.fragment.ws|1.0.2|Y|jar",
  "System Bundle Extension: XML APIs|org.apache.sling.fragment.xml|1.0.2|Y|jar",
  "Tenant|org.apache.sling.tenant|1.1.6|Y|jar",
  "Testing Clients|org.apache.sling.testing.clients|3.0.12|Y|jar",
  "Testing Email|org.apache.sling.testing.email|1.0.0|Y|jar",
  "Testing Hamcrest|org.apache.sling.testing.hamcrest|1.0.2|Y|jar",
  "Testing JCR Mock|org.apache.sling.testing.jcr-mock|1.5.4|Y|jar",
  "Testing Logging Mock|org.apache.sling.testing.logging-mock|2.0.0|Y|jar",
  "Testing OSGi Mock Core|org.apache.sling.testing.osgi-mock.core|3.2.2|org.apache.sling.testing.osgi-mock|jar",
  "Testing OSGi Mock JUnit 4|org.apache.sling.testing.osgi-mock.junit4|3.2.2|org.apache.sling.testing.osgi-mock|jar",
  "Testing OSGi Mock JUnit 5|org.apache.sling.testing.osgi-mock.junit5|3.2.2|org.apache.sling.testing.osgi-mock|jar",
  "Testing PaxExam|org.apache.sling.testing.paxexam|3.1.0|Y|jar",
  "Testing Rules|org.apache.sling.testing.rules|2.0.0|Y|jar",
  "Testing Resource Resolver Mock|org.apache.sling.testing.resourceresolver-mock|1.2.6|Y|jar",
  "Testing Server Setup Tools|org.apache.sling.testing.serversetup|1.0.4|Y|jar",
  "Testing Sling Mock Core|org.apache.sling.testing.sling-mock.core|3.2.2|org.apache.sling.testing.sling-mock|jar",
  "Testing Sling Mock JUnit 4|org.apache.sling.testing.sling-mock.junit4|3.2.2|org.apache.sling.testing.sling-mock|jar",
  "Testing Sling Mock JUnit 5|org.apache.sling.testing.sling-mock.junit5|3.2.2|org.apache.sling.testing.sling-mock|jar",
  "Testing Sling Mock Oak|org.apache.sling.testing.sling-mock-oak|3.1.2-1.40.0|Y|jar",
  "Thumbnails|org.apache.sling.thumbnails|1.0.0|Y|jar",
  "Tooling Support Install|org.apache.sling.tooling.support.install|1.0.6|Y|jar",
  "Tooling Support Source|org.apache.sling.tooling.support.source|1.0.4|Y|jar",
  "URL Rewriter|org.apache.sling.urlrewriter|0.0.2|Y|jar",
  "Validation API|org.apache.sling.validation.api|1.0.0|Y|jar",
  "Validation Core|org.apache.sling.validation.core|1.0.4|Y|jar",
  "Web Console Branding|org.apache.sling.extensions.webconsolebranding|1.0.2|Y|jar",
  "Web Console Security Provider|org.apache.sling.extensions.webconsolesecurityprovider|1.2.2|Y|jar",
  "XSS Protection API|org.apache.sling.xss|2.2.18|Y|jar",
  "XSS Protection Compat|org.apache.sling.xss.compat|1.1.0|N|jar"
]

def deprecated=[
  "Auth OpenID|Not Maintained|org.apache.sling.auth.openid|1.0.4",
  "Auth Selector|Not Maintained|org.apache.sling.auth.selector|1.0.6",
  "Background Servlets Engine|Not Maintained|org.apache.sling.bgservlets|1.0.8",
  "Background Servlets Integration Test|Not Maintained|org.apache.sling.bgservlets.testing|1.0.0",
  "Commons JSON|Replaced with Commons Johnzon|org.apache.sling.commons.json|2.0.20",
  "Explorer|Replaced with Composum|org.apache.sling.extensions.explorer|1.0.4",
  "GWT Integration|Not Maintained|org.apache.sling.extensions.gwt.servlet|3.0.0",
  "Health Check Annotations|Migrated to Apache Felix Health Checks|org.apache.sling.hc.annotations|1.0.6",
  "Health Check Core|Migrated to Apache Felix Health Checks|org.apache.sling.hc.core|1.2.10",
  "Health Check Integration Tests|Migrated to Apache Felix Health Checks|org.apache.sling.hc.it|1.0.4",
  "Health Check Samples|Migrated to Apache Felix Health Checks|org.apache.sling.hc.samples|1.0.6",
  "Health Check Webconsole|Migrated to Apache Felix Health Checks|org.apache.sling.hc.webconsole|1.1.2",
  "Installer Subystems Support|Not Maintained|org.apache.sling.installer.factory.subsystems|1.0.0",
  "JCR Compiler|Replaced with FS ClassLoader|org.apache.sling.jcr.compiler|2.1.0",
  "JCR Jackrabbit Server|Replaced with Apache Jackrabbit Oak|org.apache.sling.jcr.jackrabbit.server|2.3.0",
  "JCR Prefs|Replaced with CA Configs|org.apache.sling.jcr.prefs|1.0.0",
  "Karaf repoinit|Removed|org.apache.sling.karaf-repoinit|0.2.0",
  "Launchpad Content|Replaced with Starter Content|org.apache.sling.launchpad.content|2.0.12",
  "Path-based RTP sample|Not Maintained|org.apache.sling.samples.path-based.rtp|2.0.4",
  "Scripting JSP Taglib Compat|Superseded by the XSS API bundle|org.apache.sling.scripting.jsp.taglib.compat|1.0.0",
  "Scripting JST|Not Maintained|org.apache.sling.scripting.jst|2.0.6",
  "Servlets Compat|Not Maintained|org.apache.sling.servlets.compat|1.0.2",
  "Starter Startup|Replaced with Apache Felix HC Service Unavailable Filter|org.apache.sling.starter.startup|1.0.6",
  "Testing Sling Mock Jackrabbit|Not Maintained|org.apache.sling.testing.sling-mock-jackrabbit|1.0.0",
  "Testing Tools|SLING-5703|org.apache.sling.testing.tools|1.0.16",
  "Thread Dumper|Replaced with Apache Felix Thread Dumper|org.apache.sling.extensions.threaddump|0.2.2"
]

// ------------------------------------------------------------------------------------------------
// Utilities
// ------------------------------------------------------------------------------------------------
def downloadLink(label, artifact, version, suffix, includeSHA512=false) {
	def sep = version ? "-" : ""
	def path = "sling/${artifact}${sep}${version}${suffix}"
	def digestsBase = "https://downloads.apache.org/${path}"

	a(href:"[preferred]${path}", label)
  span(class:"digestLinks") {
    yield(" (")
    a(href:"${digestsBase}.asc", "asc")
    yield ", "
    a(href:"${digestsBase}.sha1", "sha1")
    if(includeSHA512) {
      yield ", "
      a(href:"${digestsBase}.sha512", "sha512")
    }
    yield(")")
  }
	newLine()
}

def githubLink(artifact,ghflag) {
	if(ghflag == 'Y') {
		artifact = artifact.replaceAll('\\.','-')
    def url = "https://github.com/apache/sling-${artifact}"
    // remove duplicate sling- prefix
    url = url.replaceAll('sling-sling-','sling-')
		a(href:url, "GitHub")
		newLine()
	} else if (ghflag != 'N') {
		artifact = ghflag.replaceAll('\\.','-')
    // remove duplicate sling- prefix
    def url = "https://github.com/apache/sling-${artifact}"
    url = url.replaceAll('sling-sling-','sling-')
		a(href:url, "GitHub")
		newLine()
	} else {
		yield "N/A"
	}
}

def dockerHubLink(image) {
    image = image.replaceAll(':.*$', '') // remove version for the link
    a(href:"https://hub.docker.com/r/${image}", "Docker Image")
}

def tableHead(String [] headers) {
	thead() {
		tr() {
			headers.each { header ->
				th(header)
			}
		}
	}

}

def sectionHeader(String title) {
  h3(title)
  div(class:"footnoteLink") {
    yield("Not all sha* links work for source zip archives,  (")
    a(href:"https://issues.apache.org/jira/browse/SLING-7534") {
      yield "SLING-7534"
    }
    yield("), sha512 is preferred if available")
  }
}

 // ------------------------------------------------------------------------------------------------
// Downloads page layout
// ------------------------------------------------------------------------------------------------
layout 'layout/main.tpl', true,
        projects: projects,
        breadcrumbs : contents {
            include template : 'breadcrumbs-brick.tpl'
        },
        tableOfContents : contents {
            include template : 'toc-brick.tpl'
        },
        bodyContents: contents {

            div(class:"row"){
                div(class:"small-12 columns"){
                    section(class:"wrap"){
                        yieldUnescaped U.processBody(content, config)

						sectionHeader("Sling Application")
						table(class:"table") {
							tableHead("Artifact", "Version", "GitHub", "Provides", "Package")
							tbody() {
								slingApplication.each { line ->
									tr() {
										def data = U.splitLine(line, PIPE_SEP, 6)
										td(data[0])
										td(data[4])
										td(){
											githubLink(data[2], data[5])
										}
										td(data[1])
										def artifact = "${data[2]}-${data[4]}${data[3]}"
										td(){
											if (data.size() == 7) {
											     dockerHubLink(data[6])
											     yield(", ")
											}
											downloadLink(artifact, artifact, "", "")
										}
									}
								}
							}
						}

						sectionHeader("Sling IDE Tooling")
						table(class:"table") {
							tableHead("Artifact", "Version", "Provides", "Update Site")
							tbody() {
								slingIDETooling.each { line ->
									tr() {
										def data = U.splitLine(line, PIPE_SEP, 3)
										td(data[0])
										td(data[2])
										td(data[3])
										def artifact = "${data[1]}/${data[2]}"
										td(){
											downloadLink("Update site", artifact, "", "")
										}
									}
								}
							}
						}

						sectionHeader("Sling Components")
						table(class:"table") {
							tableHead("Artifact", "Version", "GitHub", "Binary", "Source")
							tbody() {
								bundles.each { line ->
									tr() {
										def data = U.splitLine(line, PIPE_SEP, 5)
										td(data[0])
										td(data[2])
										def artifact = data[1]
										def version = data[2]
										def ghflag = data[3]
										def extension = data[4]
										td(){
											githubLink(artifact,ghflag)
										}
										td(){
											downloadLink("Bundle", artifact, version, "." + extension)
										}
										td(){
											downloadLink("Source ZIP", artifact, version, "-source-release.zip", true)
										}
									}
								}
							}
						}

						sectionHeader("Maven Plugins")
						table(class:"table") {
							tableHead("Artifact", "Version", "GitHub", "Binary", "Source")
							tbody() {
								mavenPlugins.each { line ->
									tr() {
										def data = U.splitLine(line, PIPE_SEP, 4)
										td(data[0])
										td(data[2])
										def artifact = data[1]
										def version = data[2]
										def ghflag = data[3]
										td(){
											githubLink(artifact, ghflag)
										}
										td(){
											downloadLink("Maven Plugin", artifact, version, ".jar")
										}
										td(){
											downloadLink("Source ZIP", artifact, version, "-source-release.zip", true)
										}
									}
								}
							}
						}

						sectionHeader("bnd Plugins")
						table(class:"table") {
							tableHead("Artifact", "Version", "GitHub", "Binary", "Source")
							tbody() {
								bndPlugins.each { line ->
									tr() {
										def data = U.splitLine(line, PIPE_SEP, 4)
										td(data[0])
										td(data[2])
										def artifact = data[1]
										def version = data[2]
										def ghflag = data[3]
										td(){
											githubLink(artifact, ghflag)
										}
										td(){
											downloadLink("bnd Plugin", artifact, version, ".jar")
										}
										td(){
											downloadLink("Source ZIP", artifact, version, "-source-release.zip", true)
										}
									}
								}
							}
						}

						sectionHeader("Deprecated")
						table(class:"table") {
							tableHead("Artifact", "Replacement", "Version", "Binary", "Source")
							tbody() {
								deprecated.each { line ->
									tr() {
										def data = U.splitLine(line, PIPE_SEP, 4)
										td(data[0])
										td(data[1])
										td(data[3])
										def artifact = data[2]
										def version = data[3]
										td(){
											downloadLink("Bundle", artifact, version, ".jar")
										}
										td(){
											downloadLink("Source ZIP", artifact, version, "-source-release.zip", true)
										}
									}
								}
							}
						}
                    }
                }
            }
        },
        tags : contents {
            include template: 'tags-brick.tpl'
        },
        lastModified: contents {
            include template : 'lastmodified-brick.tpl'
        }
