| /** |
| * 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; |
| } |
| } |