Skip to content

Commit 3e5bf1f

Browse files
quintessemaxandersen
authored andcommitted
refactor: Now using devkitman module (jbangdev#1874)
See jbangdev#1857
1 parent 7a0616a commit 3e5bf1f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+448
-1817
lines changed

build.gradle

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ javadoc {
4242

4343
repositories {
4444
mavenCentral()
45+
mavenLocal()
4546
//maven { url 'https://jitpack.io' }
4647
}
4748

@@ -126,10 +127,10 @@ sourceSets {
126127
sourceSets.main.compileClasspath += sourceSets.java9.output.classesDirs;
127128

128129
dependencies {
129-
implementation 'com.offbytwo:docopt:0.6.0.20150202'
130+
implementation 'dev.jbang:devkitman:0.1.2'
130131

131132
implementation 'org.apache.commons:commons-text:1.11.0'
132-
implementation 'org.apache.commons:commons-compress:1.25.0'
133+
implementation 'org.apache.commons:commons-compress:1.27.1'
133134
implementation 'info.picocli:picocli:4.7.5'
134135
implementation 'io.quarkus.qute:qute-core:1.12.2.Final'
135136
implementation 'kr.motd.maven:os-maven-plugin:1.7.1'
@@ -280,6 +281,7 @@ compileJava9Java {
280281
shadowJar {
281282
minimize() {
282283
//exclude(dependency('org.slf4j:slf4j-api:.*'))
284+
exclude(dependency('dev.jbang:devkitman:.*'))
283285
exclude(dependency('eu.maveniverse.maven.mima:context:.*'))
284286
exclude(dependency('eu.maveniverse.maven.mima.runtime:standalone-static:.*'))
285287
exclude(dependency('org.slf4j:jcl-over-slf4j:.*'))

src/main/java/dev/jbang/Cache.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
import java.nio.file.Path;
66

77
import dev.jbang.cli.ExitException;
8-
import dev.jbang.net.JdkManager;
9-
import dev.jbang.net.JdkProvider;
8+
import dev.jbang.devkitman.Jdk;
9+
import dev.jbang.devkitman.JdkManager;
10+
import dev.jbang.util.JavaUtil;
1011
import dev.jbang.util.Util;
1112

1213
public class Cache {
@@ -23,11 +24,12 @@ static void setupCache(Path dir) {
2324
public static void clearCache(CacheClass... classes) {
2425
for (CacheClass cc : classes) {
2526
Util.infoMsg("Clearing cache for " + cc.name());
26-
if (cc == CacheClass.jdks && Util.isWindows() && JdkManager.isCurrentJdkManaged()) {
27+
JdkManager jdkMan = JavaUtil.defaultJdkManager();
28+
if (cc == CacheClass.jdks && Util.isWindows() && jdkMan.isCurrentJdkManaged()) {
2729
// We're running using a managed JDK on Windows so we can't just delete the
2830
// entire folder!
29-
for (JdkProvider.Jdk jdk : JdkManager.listInstalledJdks()) {
30-
JdkManager.uninstallJdk(jdk);
31+
for (Jdk jdk : jdkMan.listInstalledJdks()) {
32+
jdkMan.uninstallJdk(jdk);
3133
}
3234
}
3335
if (cc == CacheClass.deps) {

src/main/java/dev/jbang/Main.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package dev.jbang;
22

3+
import java.io.IOException;
34
import java.util.ArrayList;
45
import java.util.List;
6+
import java.util.logging.LogManager;
57
import java.util.stream.Collectors;
68

79
import dev.jbang.cli.JBang;
@@ -10,6 +12,12 @@
1012

1113
public class Main {
1214
public static void main(String... args) {
15+
try {
16+
// Set up JUL logging so the output looks like JBang output
17+
LogManager.getLogManager().readConfiguration(Main.class.getResourceAsStream("/logging.properties"));
18+
} catch (IOException e) {
19+
// Ignore
20+
}
1321
CommandLine cli = JBang.getCommandLine();
1422
args = handleDefaultRun(cli.getCommandSpec(), args);
1523
int exitcode = cli.execute(args);

src/main/java/dev/jbang/Settings.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class Settings {
1717

1818
public static final String TRUSTED_SOURCES_JSON = "trusted-sources.json";
1919
public static final String DEPENDENCY_CACHE_JSON = "dependency_cache.json";
20-
public static final String CURRENT_JDK = "currentjdk";
20+
public static final String DEFAULT_JDK = "currentjdk";
2121
public static final String JBANG_DOT_DIR = ".jbang";
2222
public static final String BIN_DIR = "bin";
2323
public static final String EDITOR_DIR = "editor";
@@ -68,8 +68,8 @@ public static Path getConfigDir() {
6868
return getConfigDir(true);
6969
}
7070

71-
public static Path getCurrentJdkDir() {
72-
return getConfigDir(true).resolve(CURRENT_JDK);
71+
public static Path getDefaultJdkDir() {
72+
return getConfigDir(true).resolve(DEFAULT_JDK);
7373
}
7474

7575
public static Path getConfigBinDir() {

src/main/java/dev/jbang/cli/Alias.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ ProjectBuilder createProjectBuilder() {
149149
.nativeImage(nativeMixin.nativeImage)
150150
.nativeOptions(nativeMixin.nativeOptions)
151151
.integrations(buildMixin.integrations)
152-
.enablePreview(enablePreviewRequested);
152+
.enablePreview(enablePreviewRequested)
153+
.jdkManager(buildMixin.jdkProvidersMixin.getJdkManager());
153154
Path cat = getCatalog(false);
154155
if (cat != null) {
155156
pb.catalog(cat.toFile());

src/main/java/dev/jbang/cli/App.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dev.jbang.cli;
22

3+
import static dev.jbang.util.JavaUtil.defaultJdkManager;
4+
35
import java.io.IOException;
46
import java.nio.file.Files;
57
import java.nio.file.Path;
@@ -20,8 +22,7 @@
2022
import dev.jbang.Settings;
2123
import dev.jbang.catalog.CatalogUtil;
2224
import dev.jbang.dependencies.DependencyUtil;
23-
import dev.jbang.net.JdkManager;
24-
import dev.jbang.net.JdkProvider;
25+
import dev.jbang.devkitman.Jdk;
2526
import dev.jbang.source.Project;
2627
import dev.jbang.source.ProjectBuilder;
2728
import dev.jbang.util.CommandBuffer;
@@ -69,9 +70,6 @@ class AppInstall extends BaseCommand {
6970
@CommandLine.Mixin
7071
NativeMixin nativeMixin;
7172

72-
@CommandLine.Mixin
73-
JdkProvidersMixin jdkProvidersMixin;
74-
7573
@CommandLine.Mixin
7674
RunMixin runMixin;
7775

@@ -119,7 +117,6 @@ private List<String> collectRunOptions() {
119117
opts.addAll(buildMixin.opts());
120118
opts.addAll(dependencyInfoMixin.opts());
121119
opts.addAll(nativeMixin.opts());
122-
opts.addAll(jdkProvidersMixin.opts());
123120
opts.addAll(runMixin.opts());
124121
if (Boolean.TRUE.equals(enablePreviewRequested)) {
125122
opts.add("--enable-preview");
@@ -388,7 +385,7 @@ public static boolean needsSetup() {
388385
*/
389386
public static boolean guessWithJava() {
390387
boolean withJava;
391-
JdkProvider.Jdk defJdk = JdkManager.getJdk(null, false);
388+
Jdk defJdk = defaultJdkManager().getJdk(null);
392389
String javaHome = System.getenv("JAVA_HOME");
393390
Path javacCmd = Util.searchPath("javac");
394391
withJava = defJdk != null
@@ -402,12 +399,12 @@ public static boolean guessWithJava() {
402399
public static int setup(boolean withJava, boolean force, boolean chatty) {
403400
Path jdkHome = null;
404401
if (withJava) {
405-
JdkProvider.Jdk defJdk = JdkManager.getDefaultJdk();
402+
Jdk defJdk = defaultJdkManager().getDefaultJdk();
406403
if (defJdk == null) {
407404
Util.infoMsg("No default JDK set, use 'jbang jdk default <version>' to set one.");
408405
return EXIT_UNEXPECTED_STATE;
409406
}
410-
jdkHome = Settings.getCurrentJdkDir();
407+
jdkHome = Settings.getDefaultJdkDir();
411408
}
412409

413410
Path binDir = Settings.getConfigBinDir();

src/main/java/dev/jbang/cli/BaseBuildCommand.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ public abstract class BaseBuildCommand extends BaseCommand {
2323
@CommandLine.Mixin
2424
NativeMixin nativeMixin;
2525

26-
@CommandLine.Mixin
27-
JdkProvidersMixin jdkProvidersMixin;
28-
2926
@CommandLine.Option(names = {
3027
"--build-dir" }, description = "Use given directory for build results")
3128
Path buildDir;
@@ -53,7 +50,8 @@ protected ProjectBuilder createBaseProjectBuilder() {
5350
.nativeImage(nativeMixin.nativeImage)
5451
.nativeOptions(nativeMixin.nativeOptions)
5552
.integrations(buildMixin.integrations)
56-
.enablePreview(enablePreviewRequested);
53+
.enablePreview(enablePreviewRequested)
54+
.jdkManager(buildMixin.jdkProvidersMixin.getJdkManager());
5755

5856
// NB: Do not put `.mainClass(buildMixin.main)` here
5957
}

src/main/java/dev/jbang/cli/Build.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ public class Build extends BaseBuildCommand {
1414
@Override
1515
public Integer doCall() throws IOException {
1616
scriptMixin.validate();
17-
jdkProvidersMixin.initJdkProviders();
1817

1918
ProjectBuilder pb = createProjectBuilderForBuild();
2019
Project prj = pb.build(scriptMixin.scriptOrFile);
@@ -24,7 +23,6 @@ public Integer doCall() throws IOException {
2423
}
2524

2625
ProjectBuilder createProjectBuilderForBuild() {
27-
return createBaseProjectBuilder()
28-
.mainClass(buildMixin.main);
26+
return createBaseProjectBuilder().mainClass(buildMixin.main);
2927
}
3028
}

src/main/java/dev/jbang/cli/BuildMixin.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,18 @@
44
import java.util.List;
55
import java.util.Map;
66

7+
import dev.jbang.devkitman.Jdk;
8+
import dev.jbang.source.Project;
9+
710
import picocli.CommandLine;
811
import picocli.CommandLine.Option;
912

1013
public class BuildMixin {
1114
public String javaVersion;
1215

16+
@CommandLine.Mixin
17+
JdkProvidersMixin jdkProvidersMixin;
18+
1319
@CommandLine.Option(names = { "-j",
1420
"--java" }, description = "JDK version to use for running the script.")
1521
void setJavaVersion(String javaVersion) {
@@ -38,6 +44,14 @@ void setJavaVersion(String javaVersion) {
3844
"--integrations" }, description = "Enable integration execution (default: true)", negatable = true)
3945
public Boolean integrations;
4046

47+
public Jdk getProjectJdk(Project project) {
48+
Jdk jdk = project.projectJdk();
49+
if (javaVersion != null) {
50+
jdk = jdkProvidersMixin.getJdkManager().getOrInstallJdk(javaVersion);
51+
}
52+
return jdk;
53+
}
54+
4155
public List<String> opts() {
4256
List<String> opts = new ArrayList<>();
4357
if (javaVersion != null) {
@@ -69,6 +83,7 @@ public List<String> opts() {
6983
opts.add(e.getKey() + "=" + e.getValue());
7084
}
7185
}
86+
opts.addAll(jdkProvidersMixin.opts());
7287
return opts;
7388
}
7489
}

src/main/java/dev/jbang/cli/Export.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ protected ProjectBuilder createProjectBuilder(ExportMixin exportMixin) {
8888
.javaVersion(exportMixin.buildMixin.javaVersion)
8989
.mainClass(exportMixin.buildMixin.main)
9090
.moduleName(exportMixin.buildMixin.module)
91-
.compileOptions(exportMixin.buildMixin.compileOptions);
91+
.compileOptions(exportMixin.buildMixin.compileOptions)
92+
.jdkManager(exportMixin.buildMixin.jdkProvidersMixin.getJdkManager());
9293
}
9394

9495
Path getJarOutputPath() {
@@ -127,10 +128,8 @@ int apply(BuildContext ctx) throws IOException {
127128
String newPath = ctx.resolveClassPath().getManifestPath();
128129
if (!newPath.isEmpty()) {
129130
Util.infoMsg("Updating jar...");
130-
String javaVersion = exportMixin.buildMixin.javaVersion != null
131-
? exportMixin.buildMixin.javaVersion
132-
: prj.getJavaVersion();
133-
JarUtil.updateJar(outputPath, createManifest(newPath), prj.getMainClass(), javaVersion);
131+
JarUtil.updateJar(outputPath, createManifest(newPath), prj.getMainClass(),
132+
exportMixin.buildMixin.getProjectJdk(prj));
134133
}
135134

136135
Util.infoMsg("Exported to " + outputPath);
@@ -178,10 +177,8 @@ int apply(BuildContext ctx) throws IOException {
178177
}
179178

180179
Util.infoMsg("Updating jar...");
181-
String javaVersion = exportMixin.buildMixin.javaVersion != null
182-
? exportMixin.buildMixin.javaVersion
183-
: prj.getJavaVersion();
184-
JarUtil.updateJar(outputPath, createManifest(newPath.toString()), prj.getMainClass(), javaVersion);
180+
JarUtil.updateJar(outputPath, createManifest(newPath.toString()), prj.getMainClass(),
181+
exportMixin.buildMixin.getProjectJdk(prj));
185182
}
186183
Util.infoMsg("Exported to " + outputPath);
187184
return EXIT_OK;
@@ -372,7 +369,8 @@ int apply(BuildContext ctx) throws IOException {
372369
Util.verboseMsg("Unpacking artifact: " + dep);
373370
UnpackUtil.unzip(dep.getFile(), tmpDir, false, null, ExportFatjar::handleExistingFile);
374371
}
375-
JarUtil.createJar(outputPath, tmpDir, null, prj.getMainClass(), prj.getJavaVersion());
372+
JarUtil.createJar(outputPath, tmpDir, null, prj.getMainClass(),
373+
exportMixin.buildMixin.getProjectJdk(prj));
376374
} finally {
377375
Util.deletePath(tmpDir, true);
378376
}
@@ -454,7 +452,7 @@ int apply(BuildContext ctx) throws IOException {
454452
}
455453
}
456454

457-
String jlinkCmd = JavaUtil.resolveInJavaHome("jlink", null);
455+
String jlinkCmd = JavaUtil.resolveInJavaHome("jlink", prj.projectJdk());
458456
String modMain = ModuleUtil.getModuleMain(prj);
459457
List<String> cps = artifacts.stream().map(a -> a.getFile().toString()).collect(Collectors.toList());
460458
List<String> cp = new ArrayList<>(artifacts.size() + 1);

0 commit comments

Comments
 (0)