blob: 28d346f26ac1687f98b3d5bd5d687984c909f465 [file] [log] [blame]
/**
* Copyright (c) 2021 Eclipse contributors and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.justj.codegen.model.util;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class TemurinIndexer
{
static final Pattern TAG_NAME = Pattern.compile("\"name\"\\s*:\\s*\"(jdk-([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))(?:\\.([0-9]+))?\\+([0-9]+))\"");
static final Pattern JDK_URL1 = Pattern.compile(
"href=\"/adoptium/temurin([0-9]+)-binaries/releases/download/jdk-([0-9]+)%2B35/OpenJDK([0-9]+)-jdk_([^_]+)_([^_]+)_hotspot_([0-9.]+)\\.(tar.gz|zip)\"");
static final Pattern JDK_URL = Pattern.compile(//
"href=\"/(adoptium/temurin[0-9]+-binaries/releases/download/jdk-[^/]+/OpenJDK[^-]+-jdk_[^\"]*\\.(zip|tar.gz))\"");
public static void main(String[] args) throws Exception
{
System.out.println("// Generated by /org.eclipse.justj.codegen/src/org/eclipse/justj/codegen/model/util/TemurinIndexer.java");
for (String repo : new String []{ "11", "17" })
{
URL url = new URL("https://api.github.com/repos/adoptium/temurin" + repo + "-binaries/tags");
try (InputStream input = url.openStream())
{
List<String> lines = new BufferedReader(new InputStreamReader(input)).lines().collect(Collectors.toList());
Map<Long, String> versionTags = new TreeMap<>(Comparator.reverseOrder());
for (String line : lines)
{
for (Matcher matcher = TAG_NAME.matcher(line); matcher.find();)
{
long version = Integer.parseInt(matcher.group(2));
version = 1000L * version + Integer.parseInt(matcher.group(3));
version = 100L * version + Integer.parseInt(matcher.group(4));
if (matcher.group(5) != null)
{
version = 100L * version + Integer.parseInt(matcher.group(5));
}
else
{
version = 100L * version;
}
version = 100L * version + Integer.parseInt(matcher.group(6));
versionTags.put(version, matcher.group(1));
}
}
System.out.println();
System.out.println("// Tags " + versionTags.values().stream().collect(Collectors.joining(", ")));
String latest = versionTags.entrySet().iterator().next().getValue();
URL downloadsURL = new URL("https://github.com/adoptium/temurin" + repo + "-binaries/releases/tag/" + latest);
List<String> jdkDownloadURLs = new ArrayList<>();
try (InputStream download = downloadsURL.openStream())
{
List<String> downloads = new BufferedReader(new InputStreamReader(download)).lines().collect(Collectors.toList());
for (String downloadLine : downloads)
{
for (Matcher matcher = JDK_URL.matcher(downloadLine); matcher.find();)
{
jdkDownloadURLs.add("https://github.com/" + matcher.group(1).replace("%2B", "+"));
}
}
}
System.out.println("def java" + repo + "Adoptium = [");
System.out.println(" label: 'Java " + repo + " (Adoptium)',");
System.out.println(" BUILD_DESCRIPTION: 'Build Adoptium Java " + repo + "',");
System.out.println(" PUBLISH_LOCATION_PREFIX: \"${defaultPrefix}\",");
System.out.println(" JUSTJ_MANIFEST_URL: \"${justjURL}/${defaultPrefix}/" + repo + "/downloads/latest/justj.manifest\",");
System.out.println(" JDK_URLS_WINDOWS: '''");
{
String jdkURL = getURL(jdkDownloadURLs, "x64_windows");
if (jdkURL != null)
{
System.out.println(" " + jdkURL);
}
}
System.out.println(" ''',");
System.out.println(" JDK_URLS_MACOS: '''");
{
String jdkURL = getURL(jdkDownloadURLs, "x64_mac");
if (jdkURL != null)
{
System.out.println(" " + jdkURL);
}
}
System.out.println(" ''',");
System.out.println(" JDK_URLS_MACOS_AARCH64: '''");
{
String jdkURL = getURL(jdkDownloadURLs, "aarch64_mac");
if (jdkURL != null)
{
System.out.println(" " + jdkURL);
}
}
System.out.println(" ''',");
System.out.println(" JDK_URLS_LINUX: '''");
{
String jdkURL = getURL(jdkDownloadURLs, "x64_linux");
if (jdkURL != null)
{
System.out.println(" " + jdkURL);
}
}
System.out.println(" ''',");
System.out.println(" JDK_URLS_LINUX_AARCH64: '''");
{
String jdkURL = getURL(jdkDownloadURLs, "aarch64_linux");
if (jdkURL != null)
{
System.out.println(" " + jdkURL);
}
}
System.out.println(" ''',");
System.out.println(" BUILD_TYPE: 'nightly',");
System.out.println(" PROMOTE: 'true'");
System.out.println("]");
}
}
}
private static String getURL(List<String> downloadURLs, String type)
{
for (String downloadURL : downloadURLs)
{
if (downloadURL.contains(type))
{
return downloadURL;
}
}
return null;
}
}