Skip to content

Commit d25ee6a

Browse files
committed
Rename to Java Provisioner
Fix shadow issues Enable github workflows
1 parent c601e73 commit d25ee6a

17 files changed

+133
-60
lines changed

.github/workflows/publish.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Publish
2+
3+
on:
4+
push:
5+
branches: [ "master" ]
6+
paths-ignore:
7+
- '.github/workflows/**'
8+
- 'README.md'
9+
- 'settings.gradle'
10+
11+
permissions:
12+
contents: read
13+
14+
jobs:
15+
build:
16+
uses: MinecraftForge/SharedActions/.github/workflows/gradle.yml@v0
17+
with:
18+
java: 17
19+
gradle_tasks: "check publish"
20+
artifact_name: "java-provisioner"
21+
secrets:
22+
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
23+
PROMOTE_ARTIFACT_WEBHOOK: ${{ secrets.PROMOTE_ARTIFACT_WEBHOOK }}
24+
PROMOTE_ARTIFACT_USERNAME: ${{ secrets.PROMOTE_ARTIFACT_USERNAME }}
25+
PROMOTE_ARTIFACT_PASSWORD: ${{ secrets.PROMOTE_ARTIFACT_PASSWORD }}
26+
MAVEN_USER: ${{ secrets.MAVEN_USER }}
27+
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
28+
GRADLE_CACHE_KEY: ${{ secrets.GRADLE_CACHE_KEY }}

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
## Java Provisioner
2+
3+
A tool that locates, and if nessasary, downloads a Java distribution using Disco

build.gradle

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
2+
import com.github.jengelman.gradle.plugins.shadow.transformers.PropertiesFileTransformer
23

34
plugins {
45
id 'java-library'
56
id 'idea'
7+
id 'eclipse'
68
id 'maven-publish'
79
alias libs.plugins.licenser
810
alias libs.plugins.gradleutils
911
alias libs.plugins.shadow
1012
}
1113

12-
final projectDisplayName = 'Java Version'
14+
final projectDisplayName = 'Java Provisioner'
1315
final projectVendor = 'Forge Development LLC'
14-
description = 'Java Version management using Disco'
16+
description = 'A tool that locates, and if nessasary, downloads a Java distribution using Disco'
1517
group = 'net.minecraftforge'
1618
version = gitversion.tagOffset
1719

@@ -20,7 +22,7 @@ println "Version: $version"
2022
java {
2123
// Currently JOpt is the limiting, requiring java 8
2224
// But also toolchains don't support building for anything lower then 8
23-
toolchain.languageVersion = JavaLanguageVersion.of 8
25+
toolchain.languageVersion = JavaLanguageVersion.of(8)
2426
withSourcesJar()
2527
}
2628

@@ -62,8 +64,8 @@ license {
6264
tasks.named('jar', Jar) {
6365
manifest {
6466
attributes([
65-
'Main-Class' : 'net.minecraftforge.java_version.Main',
66-
'Automatic-Module-Name': 'net.minecraftforge.java_version',
67+
'Main-Class' : 'net.minecraftforge.java_provisioner.Main',
68+
'Automatic-Module-Name': 'net.minecraftforge.java_provisioner',
6769
'Sealed' : true
6870
])
6971
attributes([
@@ -73,15 +75,20 @@ tasks.named('jar', Jar) {
7375
'Implementation-Title' : projectDisplayName,
7476
'Implementation-Vendor' : projectVendor,
7577
'Implementation-Version': project.version
76-
], 'net/minecraftforge/java_version/')
78+
], 'net/minecraftforge/java_provisioner/')
7779
}
7880

7981
from createJavaProbeClass.outputs.files
8082
}
8183

8284
tasks.named('shadowJar', ShadowJar) {
8385
enableRelocation = true
84-
relocationPrefix = 'net.minecraftforge.java_version.shadow'
86+
relocationPrefix = 'net.minecraftforge.java_provisioner.shadow'
87+
// Rewrite JOpt's message files, so that help text is displayed nicely.
88+
transform(PropertiesFileTransformer) {
89+
paths = [ 'Messages.properties$' ]
90+
keyTransformer = { key -> relocationPrefix.get() + '.' + key }
91+
}
8592
}
8693

8794
tasks.withType(JavaCompile).configureEach {
@@ -120,4 +127,8 @@ publishing {
120127
}
121128
}
122129

130+
eclipse {
131+
synchronizationTasks javaProbeJar
132+
}
133+
123134
idea.module { downloadJavadoc = downloadSources = true }

settings.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@ dependencyResolutionManagement {
2424
}
2525
}
2626

27-
rootProject.name = 'java-version'
27+
rootProject.name = 'java-provisioner'

src/main/java/net/minecraftforge/java_version/Disco.java renamed to src/main/java/net/minecraftforge/java_provisioner/Disco.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Copyright (c) Forge Development LLC and contributors
33
* SPDX-License-Identifier: LGPL-2.1-only
44
*/
5-
package net.minecraftforge.java_version;
5+
package net.minecraftforge.java_provisioner;
66

77
import java.io.BufferedWriter;
88
import java.io.ByteArrayInputStream;
@@ -26,7 +26,6 @@
2626
import java.util.Locale;
2727
import java.util.Map;
2828
import java.util.Set;
29-
import java.util.TreeMap;
3029
import java.util.zip.GZIPInputStream;
3130
import java.util.zip.ZipEntry;
3231
import java.util.zip.ZipFile;
@@ -35,6 +34,9 @@
3534
import com.google.gson.TypeAdapter;
3635
import com.google.gson.internal.bind.TypeAdapters;
3736
import com.google.gson.stream.JsonWriter;
37+
38+
import net.minecraftforge.java_provisioner.util.OS;
39+
import net.minecraftforge.java_provisioner.util.ProcessUtils;
3840
import net.minecraftforge.util.download.DownloadUtils;
3941
import net.minecraftforge.util.hash.HashFunction;
4042
import net.minecraftforge.util.logging.Log;
@@ -49,9 +51,6 @@
4951
import com.google.gson.reflect.TypeToken;
5052
import com.google.gson.stream.JsonReader;
5153

52-
import net.minecraftforge.java_version.util.OS;
53-
import net.minecraftforge.java_version.util.ProcessUtils;
54-
5554
/**
5655
* A client for the <a href="https://github.com/foojayio/discoapi">foojay disco API</a>
5756
* <p>

src/main/java/net/minecraftforge/java_version/DiscoLocator.java renamed to src/main/java/net/minecraftforge/java_provisioner/DiscoLocator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22
* Copyright (c) Forge Development LLC and contributors
33
* SPDX-License-Identifier: LGPL-2.1-only
44
*/
5-
package net.minecraftforge.java_version;
5+
package net.minecraftforge.java_provisioner;
66

77
import java.io.File;
88
import java.util.ArrayList;
99
import java.util.Collections;
1010
import java.util.List;
1111

12-
import net.minecraftforge.java_version.Disco.Arch;
13-
import net.minecraftforge.java_version.api.IJavaInstall;
14-
import net.minecraftforge.java_version.util.OS;
12+
import net.minecraftforge.java_provisioner.Disco.Arch;
13+
import net.minecraftforge.java_provisioner.api.IJavaInstall;
14+
import net.minecraftforge.java_provisioner.util.OS;
1515

1616
/**
1717
* Locates java installs that have been downloaded from the <a href="https://github.com/foojayio/discoapi">disco API</a>

src/main/java/net/minecraftforge/java_version/DiscoMain.java renamed to src/main/java/net/minecraftforge/java_provisioner/DiscoMain.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Copyright (c) Forge Development LLC and contributors
33
* SPDX-License-Identifier: LGPL-2.1-only
44
*/
5-
package net.minecraftforge.java_version;
5+
package net.minecraftforge.java_provisioner;
66

77
import java.io.File;
88
import java.util.Arrays;
@@ -12,8 +12,8 @@
1212
import joptsimple.OptionSet;
1313
import joptsimple.OptionSpec;
1414
import joptsimple.util.EnumConverter;
15-
import net.minecraftforge.java_version.util.OS;
16-
import net.minecraftforge.java_version.util.ProcessUtils;
15+
import net.minecraftforge.java_provisioner.util.OS;
16+
import net.minecraftforge.java_provisioner.util.ProcessUtils;
1717
import net.minecraftforge.util.logging.Log;
1818

1919
public class DiscoMain {
@@ -22,6 +22,8 @@ public static void main(String[] args) throws Exception {
2222
parser.allowsUnrecognizedOptions();
2323
OptionSpec<Void> helpO = parser.accepts("help", "Displays this help message and exits");
2424

25+
parser.accepts("disco-main", "Instructs the executable jar to use the DiscoMain entry point");
26+
2527
OptionSpec<File> cacheO = parser.accepts("cache",
2628
"Directory to store data needed for this program")
2729
.withRequiredArg().ofType(File.class).defaultsTo(new File("cache"));

src/main/java/net/minecraftforge/java_version/GradleLocator.java renamed to src/main/java/net/minecraftforge/java_provisioner/GradleLocator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Copyright (c) Forge Development LLC and contributors
33
* SPDX-License-Identifier: LGPL-2.1-only
44
*/
5-
package net.minecraftforge.java_version;
5+
package net.minecraftforge.java_provisioner;
66

77
import java.io.File;
88
import java.io.IOException;
@@ -11,8 +11,8 @@
1111
import java.util.List;
1212
import java.util.regex.Pattern;
1313

14-
import net.minecraftforge.java_version.api.IJavaInstall;
15-
import net.minecraftforge.java_version.util.OS;
14+
import net.minecraftforge.java_provisioner.api.IJavaInstall;
15+
import net.minecraftforge.java_provisioner.util.OS;
1616

1717
/*
1818
* Attempts to find the java install using various tools that Gradle uses

src/main/java/net/minecraftforge/java_version/JavaHomeLocator.java renamed to src/main/java/net/minecraftforge/java_provisioner/JavaHomeLocator.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22
* Copyright (c) Forge Development LLC and contributors
33
* SPDX-License-Identifier: LGPL-2.1-only
44
*/
5-
package net.minecraftforge.java_version;
5+
package net.minecraftforge.java_provisioner;
66

77
import java.io.File;
88
import java.util.ArrayList;
99
import java.util.List;
1010

11-
import net.minecraftforge.java_version.api.IJavaInstall;
12-
import net.minecraftforge.java_version.api.IJavaLocator;
13-
import net.minecraftforge.java_version.util.OS;
14-
import net.minecraftforge.java_version.util.ProcessUtils;
11+
import net.minecraftforge.java_provisioner.api.IJavaInstall;
12+
import net.minecraftforge.java_provisioner.api.IJavaLocator;
13+
import net.minecraftforge.java_provisioner.util.OS;
14+
import net.minecraftforge.java_provisioner.util.ProcessUtils;
1515

1616
/*
1717
* Attempts to find the java install using the JAVA_HOME environment variable.

src/main/java/net/minecraftforge/java_version/JavaVersion.java renamed to src/main/java/net/minecraftforge/java_provisioner/JavaVersion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Copyright (c) Forge Development LLC and contributors
33
* SPDX-License-Identifier: LGPL-2.1-only
44
*/
5-
package net.minecraftforge.java_version;
5+
package net.minecraftforge.java_provisioner;
66

77
import java.util.ArrayList;
88
import java.util.List;

src/main/java/net/minecraftforge/java_version/Main.java renamed to src/main/java/net/minecraftforge/java_provisioner/Main.java

Lines changed: 42 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,39 @@
22
* Copyright (c) Forge Development LLC and contributors
33
* SPDX-License-Identifier: LGPL-2.1-only
44
*/
5-
package net.minecraftforge.java_version;
5+
package net.minecraftforge.java_provisioner;
66

77
import java.io.File;
88
import java.util.ArrayList;
99
import java.util.Collections;
1010
import java.util.HashSet;
1111
import java.util.Iterator;
1212
import java.util.List;
13+
import java.util.Locale;
1314
import java.util.Set;
1415

1516
import joptsimple.AbstractOptionSpec;
1617
import joptsimple.OptionParser;
1718
import joptsimple.OptionSet;
1819
import joptsimple.OptionSpec;
19-
import net.minecraftforge.java_version.Disco.Arch;
20-
import net.minecraftforge.java_version.Disco.Distro;
21-
import net.minecraftforge.java_version.api.IJavaInstall;
22-
import net.minecraftforge.java_version.api.IJavaLocator;
23-
import net.minecraftforge.java_version.util.OS;
20+
import net.minecraftforge.java_provisioner.Disco.Arch;
21+
import net.minecraftforge.java_provisioner.Disco.Distro;
22+
import net.minecraftforge.java_provisioner.api.IJavaInstall;
23+
import net.minecraftforge.java_provisioner.api.IJavaLocator;
24+
import net.minecraftforge.java_provisioner.util.OS;
2425
import net.minecraftforge.util.logging.Log;
2526

2627
public class Main {
2728
public static void main(String[] args) throws Exception {
2829
OptionParser parser = new OptionParser();
29-
parser.allowsUnrecognizedOptions();
30+
31+
if (hasArgument(args, "--disco-main")) {
32+
DiscoMain.main(args);
33+
return;
34+
}
35+
3036
OptionSpec<Void> helpO = parser.accepts("help", "Displays this help message and exits");
37+
parser.accepts("disco-main", "Use the DiscoMain entry point");
3138

3239
OptionSpec<File> cacheO = parser.accepts("cache",
3340
"Directory to store data needed for this program")
@@ -38,11 +45,13 @@ public static void main(String[] args) throws Exception {
3845

3946
OptionSpec<Integer> versionO = parser.accepts("version",
4047
"Major version of java to try and locate")
41-
.withOptionalArg().ofType(Integer.class);
48+
.withRequiredArg().ofType(Integer.class);
4249

4350
OptionSpec<Void> allO = parser.accepts("all",
4451
"Display information about all detected java installs");
4552

53+
OptionSpec<Void> testO = parser.accepts("test", "Enable test functionality, provisioning a bunch of jdks.");
54+
4655
OptionSet options = parser.parse(args);
4756
if (options.has(helpO)) {
4857
parser.printHelpOn(Log.INFO);
@@ -56,23 +65,39 @@ public static void main(String[] args) throws Exception {
5665
locators.add(new GradleLocator());
5766
locators.add(disco);
5867

59-
// populate downloaded for testing
60-
Disco tmp = new Disco(cache);
61-
for (Distro dist : new Distro[] { Distro.TEMURIN, Distro.AOJ, Distro.ORACLE, Distro.ZULU, Distro.GRAALVM, Distro.GRAALVM_COMMUNITY}) {
62-
List<Disco.Package> jdks = tmp.getPackages(22, OS.CURRENT, dist, Arch.CURRENT);
63-
int seen = 0;
64-
for (Disco.Package pkg : jdks) {
65-
if (seen++ < 3)
66-
tmp.extract(pkg);
68+
if (options.has(testO)) {
69+
// populate downloaded for testing
70+
Disco tmp = new Disco(cache);
71+
int version = options.has(versionO) ? options.valueOf(versionO) : 22;
72+
for (Distro dist : new Distro[] { Distro.TEMURIN, Distro.AOJ, Distro.ORACLE, Distro.ZULU, Distro.GRAALVM, Distro.GRAALVM_COMMUNITY}) {
73+
List<Disco.Package> jdks = tmp.getPackages(version, OS.CURRENT, dist, Arch.CURRENT);
74+
int seen = 0;
75+
for (Disco.Package pkg : jdks) {
76+
if (seen++ < 3)
77+
tmp.extract(pkg);
78+
}
6779
}
6880
}
6981

7082
if (options.has(allO)) {
7183
listAllJavaInstalls(locators);
72-
} else {
84+
} else if (options.has(versionO)) {
7385
int version = options.valueOf(versionO);
7486
findSpecificVersion(locators, disco, version);
87+
} else {
88+
Log.error("You must specify a version to search for using --version or --all to list all java installs.");
89+
parser.printHelpOn(Log.INFO);
90+
System.exit(-1);
91+
}
92+
}
93+
94+
private static boolean hasArgument(String[] args, String arg) {
95+
for (String s : args) {
96+
if (s.toLowerCase(Locale.ENGLISH).startsWith(arg))
97+
return true;
7598
}
99+
100+
return false;
76101
}
77102

78103
private static void findSpecificVersion(List<IJavaLocator> locators, DiscoLocator disco, int version) {

src/main/java/net/minecraftforge/java_version/api/IJavaInstall.java renamed to src/main/java/net/minecraftforge/java_provisioner/api/IJavaInstall.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
* Copyright (c) Forge Development LLC and contributors
33
* SPDX-License-Identifier: LGPL-2.1-only
44
*/
5-
package net.minecraftforge.java_version.api;
5+
package net.minecraftforge.java_provisioner.api;
66

77
import java.io.File;
8-
import net.minecraftforge.java_version.JavaVersion;
8+
9+
import net.minecraftforge.java_provisioner.JavaVersion;
910

1011
public interface IJavaInstall extends Comparable<IJavaInstall> {
1112
File home();

src/main/java/net/minecraftforge/java_version/api/IJavaLocator.java renamed to src/main/java/net/minecraftforge/java_provisioner/api/IJavaLocator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
* Copyright (c) Forge Development LLC and contributors
33
* SPDX-License-Identifier: LGPL-2.1-only
44
*/
5-
package net.minecraftforge.java_version.api;
5+
package net.minecraftforge.java_provisioner.api;
66

77
import java.io.File;
88
import java.util.List;
99

10-
import net.minecraftforge.java_version.DiscoLocator;
11-
import net.minecraftforge.java_version.GradleLocator;
12-
import net.minecraftforge.java_version.JavaHomeLocator;
10+
import net.minecraftforge.java_provisioner.DiscoLocator;
11+
import net.minecraftforge.java_provisioner.GradleLocator;
12+
import net.minecraftforge.java_provisioner.JavaHomeLocator;
1313

1414
public interface IJavaLocator {
1515
/**

0 commit comments

Comments
 (0)