Skip to content

Commit fa3279f

Browse files
committed
refactor: Now using devkitman module
See #1857
1 parent 47b3886 commit fa3279f

Some content is hidden

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

48 files changed

+454
-1819
lines changed

build.gradle

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ javadoc {
2525
}
2626

2727
repositories {
28+
mavenLocal()
2829
mavenCentral()
2930
//maven { url 'https://jitpack.io' }
3031
}
@@ -90,10 +91,12 @@ sourceSets {
9091
sourceSets.main.compileClasspath += sourceSets.java9.output.classesDirs;
9192

9293
dependencies {
93-
implementation 'com.offbytwo:docopt:0.6.0.20150202'
94+
implementation 'dev.jbang:devkitman:0.1.2'
95+
96+
// implementation 'com.offbytwo:docopt:0.6.0.20150202'
9497

9598
implementation 'org.apache.commons:commons-text:1.11.0'
96-
implementation 'org.apache.commons:commons-compress:1.25.0'
99+
implementation 'org.apache.commons:commons-compress:1.27.1'
97100
implementation 'info.picocli:picocli:4.7.5'
98101
implementation 'io.quarkus.qute:qute-core:1.12.2.Final'
99102
implementation 'kr.motd.maven:os-maven-plugin:1.7.1'
@@ -238,6 +241,7 @@ compileJava9Java {
238241
shadowJar {
239242
minimize() {
240243
//exclude(dependency('org.slf4j:slf4j-api:.*'))
244+
exclude(dependency('dev.jbang:devkitman:.*'))
241245
exclude(dependency('eu.maveniverse.maven.mima:context:.*'))
242246
exclude(dependency('eu.maveniverse.maven.mima.runtime:standalone-static:.*'))
243247
exclude(dependency('org.slf4j:jcl-over-slf4j:.*'))

itests/javaversion.feature

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ Feature: java version control
22

33
Scenario: java run non existent //java
44
When command('jbang --verbose java4321.java')
5-
Then match err contains "JDK version is not available for installation: 4321"
5+
Then match err contains "No suitable JDK was found for requested version: 4321"
66

77

88
Scenario: java run with explicit java 8
99
When command('jbang --verbose --java 8 java4321.java')
10-
Then match err !contains "JDK version is not available for installation: 4321"
10+
Then match err !contains "No suitable JDK was found for requested version: 4321"

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;
@@ -21,8 +23,7 @@
2123
import dev.jbang.Settings;
2224
import dev.jbang.catalog.CatalogUtil;
2325
import dev.jbang.dependencies.DependencyUtil;
24-
import dev.jbang.net.JdkManager;
25-
import dev.jbang.net.JdkProvider;
26+
import dev.jbang.devkitman.Jdk;
2627
import dev.jbang.source.Project;
2728
import dev.jbang.source.ProjectBuilder;
2829
import dev.jbang.util.CommandBuffer;
@@ -70,9 +71,6 @@ class AppInstall extends BaseCommand {
7071
@CommandLine.Mixin
7172
NativeMixin nativeMixin;
7273

73-
@CommandLine.Mixin
74-
JdkProvidersMixin jdkProvidersMixin;
75-
7674
@CommandLine.Mixin
7775
RunMixin runMixin;
7876

@@ -120,7 +118,6 @@ private List<String> collectRunOptions() {
120118
opts.addAll(buildMixin.opts());
121119
opts.addAll(dependencyInfoMixin.opts());
122120
opts.addAll(nativeMixin.opts());
123-
opts.addAll(jdkProvidersMixin.opts());
124121
opts.addAll(runMixin.opts());
125122
if (Boolean.TRUE.equals(enablePreviewRequested)) {
126123
opts.add("--enable-preview");
@@ -401,7 +398,7 @@ public static boolean needsSetup() {
401398
*/
402399
public static boolean guessWithJava() {
403400
boolean withJava;
404-
JdkProvider.Jdk defJdk = JdkManager.getJdk(null, false);
401+
Jdk defJdk = defaultJdkManager().getJdk(null);
405402
String javaHome = System.getenv("JAVA_HOME");
406403
Path javacCmd = Util.searchPath("javac");
407404
withJava = defJdk != null
@@ -415,12 +412,12 @@ public static boolean guessWithJava() {
415412
public static int setup(boolean withJava, boolean force, boolean chatty) {
416413
Path jdkHome = null;
417414
if (withJava) {
418-
JdkProvider.Jdk defJdk = JdkManager.getDefaultJdk();
415+
Jdk defJdk = defaultJdkManager().getDefaultJdk();
419416
if (defJdk == null) {
420417
Util.infoMsg("No default JDK set, use 'jbang jdk default <version>' to set one.");
421418
return EXIT_UNEXPECTED_STATE;
422419
}
423-
jdkHome = Settings.getCurrentJdkDir();
420+
jdkHome = Settings.getDefaultJdkDir();
424421
}
425422

426423
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
}

0 commit comments

Comments
 (0)