Skip to content

Commit 1af9112

Browse files
author
jeka-bot
committed
Fix initialization logic and improve readability across core and plugins
- Replace incorrect method `preInitMethodsOf` with `postInitMethodsOf`. - Enhance Javadoc annotations with cleaner docstring syntax. - Introduce optional runtime library inclusion in `BundleKBean`. - Refactor dependency resolution for clearer context in logs. - Add utility methods and minor performance improvements across files.
1 parent 218abdb commit 1af9112

File tree

6 files changed

+58
-28
lines changed

6 files changed

+58
-28
lines changed

core/src/main/java/dev/jeka/core/api/project/JkProject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,7 @@ public List<String> getRunJavaOptions() {
726726
* Returns the Java version effectively used for compiling and running.
727727
*/
728728
public String getEffectiveJavaVersion() {
729-
return Optional.of(this.jvmTargetVersion).orElse(JkJavaVersion.ofCurrent()).toString();
729+
return Optional.ofNullable(this.jvmTargetVersion).orElse(JkJavaVersion.ofCurrent()).toString();
730730
}
731731

732732
LocalAndTxtDependencies textAndLocalDeps() {

core/src/main/java/dev/jeka/core/tool/builtins/app/AppBuilder.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ class AppBuilder {
3838

3939
static final String SHE_BANG = "#!/bin/sh";
4040

41-
static Path build(Path baseDir, boolean isNative) {
42-
String[] buildArgs = buildArgs(baseDir, isNative);
41+
static Path build(Path baseDir, boolean isNative, boolean isBundle) {
42+
String[] buildArgs = buildArgs(baseDir, isNative, isBundle);
4343
JkLog.verbose("Use commands: %s", String.join(" ", buildArgs));
4444
JkProcess.ofWinOrUx("jeka.bat", "jeka")
4545
.setWorkingDir(baseDir)
@@ -95,7 +95,7 @@ private static Path createShellFile(Path baseDir, Path jarPath) {
9595
.get();
9696
}
9797

98-
private static String[] buildArgs(Path base, boolean nativeCompile) {
98+
private static String[] buildArgs(Path base, boolean nativeCompile, boolean bundle) {
9999
Path jekaProperties = base.resolve(JkConstants.PROPERTIES_FILE);
100100
List<String> args = new LinkedList<>();
101101
if (Files.exists(jekaProperties)) {
@@ -118,7 +118,10 @@ private static String[] buildArgs(Path base, boolean nativeCompile) {
118118
args.add("base:");
119119
args.add("pack");
120120
}
121-
121+
}
122+
if (bundle) {
123+
args.add("bundle:");
124+
args.add("pack");
122125
}
123126
}
124127
args.add("-Djeka.test.skip=true");

core/src/main/java/dev/jeka/core/tool/builtins/app/AppKBean.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import dev.jeka.core.tool.JkDoc;
2525
import dev.jeka.core.tool.JkDocUrl;
2626
import dev.jeka.core.tool.KBean;
27+
import dev.jeka.core.tool.builtins.project.BundleKBean;
2728
import dev.jeka.core.tool.builtins.tooling.nativ.NativeKBean;
2829

2930
import java.util.List;
@@ -227,7 +228,8 @@ public void install() {
227228

228229
// Install built app in target folder
229230
boolean isNative = find(NativeKBean.class).isPresent();
230-
appManager.install(appName, repoAndTag, isNative);
231+
boolean bundle = find(BundleKBean.class).isPresent();
232+
appManager.install(appName, repoAndTag, isNative, bundle);
231233

232234
JkLog.info("App has been installed in %s.", appManager.appDir);
233235
JkLog.info("Run with: %s", JkAnsi.yellow(suggestedAppName));

core/src/main/java/dev/jeka/core/tool/builtins/app/AppManager.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import dev.jeka.core.api.system.JkLog;
2424
import dev.jeka.core.api.tooling.git.JkGit;
2525
import dev.jeka.core.api.utils.*;
26+
import dev.jeka.core.tool.JkConstants;
27+
import dev.jeka.core.tool.builtins.project.BundleKBean;
2628

2729
import java.nio.file.Files;
2830
import java.nio.file.Path;
@@ -61,7 +63,7 @@ static AppManager of() {
6163
JkLocator.getCacheDir().resolve("git").resolve("apps"));
6264
}
6365

64-
void install(String appName, RepoAndTag repoAndTag, boolean isNative) {
66+
void install(String appName, RepoAndTag repoAndTag, boolean isNative, boolean isBundle) {
6567
Path repoDir = repoDir(appName);
6668
JkUtilsPath.deleteQuietly(repoDir, false);
6769
JkUtilsPath.createDirectories(repoDir);
@@ -72,7 +74,7 @@ void install(String appName, RepoAndTag repoAndTag, boolean isNative) {
7274
.addParams(repoAndTag.repoUrl, repoDir.toString())
7375
.exec();
7476
JkLog.info("Build app...");
75-
buildAndInstall(appName, isNative, repoDir);
77+
buildAndInstall(appName, isNative, repoDir, isBundle);
7678
}
7779

7880
void updateWithTag(String appName, String tag) {
@@ -89,7 +91,7 @@ void updateWithTag(String appName, String tag) {
8991

9092
boolean isNative = isNative(appFile);
9193
JkLog.info("Re-building the app...");
92-
buildAndInstall(appName, isNative, repoDir);
94+
buildAndInstall(appName, isNative, repoDir, isBundle());
9395
}
9496

9597
void updateToLastCommit(String appName) {
@@ -107,7 +109,8 @@ void updateToLastCommit(String appName) {
107109

108110
boolean isNative = isNative(appFile);
109111
JkLog.info("Re-building the app...");
110-
buildAndInstall(appName, isNative, repoDir);
112+
113+
buildAndInstall(appName, isNative, repoDir, isBundle());
111114

112115
JkLog.endTask();
113116
}
@@ -277,10 +280,10 @@ static boolean isAppNameValid(String name) {
277280
return name.matches("[a-zA-Z0-9\\-]+");
278281
}
279282

280-
private void buildAndInstall(String appName, boolean isNative, Path repoDir) {
283+
private void buildAndInstall(String appName, boolean isNative, Path repoDir, boolean isBundle) {
281284
Path artefact;
282285
try {
283-
artefact = AppBuilder.build(repoDir, isNative);
286+
artefact = AppBuilder.build(repoDir, isNative, isBundle());
284287
} catch (RuntimeException e) {
285288
JkGit git = JkGit.of(repoDir);
286289
String remoteRepoUrl = git.getRemoteUrl();
@@ -347,6 +350,11 @@ private boolean isNative(Path appFile) {
347350
return !content.trim().startsWith(AppBuilder.SHE_BANG);
348351
}
349352

353+
private boolean isBundle() {
354+
return Files.exists(
355+
this.repoCacheDir.resolve(JkConstants.OUTPUT_PATH).resolve(BundleKBean.JPACKAGE_TEMP_DIR_NAME));
356+
}
357+
350358
static class AppVersion {
351359

352360
final String appName;

core/src/main/java/dev/jeka/core/tool/builtins/app/Catalog.java

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@ private Catalog(Map<String, AppInfo> apps) {
4040
this.apps = apps;
4141
}
4242

43-
static Catalog ofBuiltin() {
44-
return ofInputStream(() -> Catalog.class.getResourceAsStream("demo-catalog.properties"));
45-
}
46-
4743
static Catalog of(String url) {
4844
try (InputStream inputStream = JkUtilsIO.toUrl(url).openStream()) {
4945
Properties properties = new Properties();
@@ -72,9 +68,22 @@ void print(String catalogName) {
7268
System.out.println("Desc: " + appInfo.description);
7369
System.out.println("Repo: " + appInfo.repo);
7470
System.out.println("Run : " + JkAnsi.yellow("jeka -r " + appInfo.repo + " -p"));
75-
System.out.println("Inst: " + JkAnsi.yellow("jeka app: install repo="
76-
+ appName + "@" + catalogName));
77-
//System.out.println("Inst: " + JkAnsi.yellow("jeka app: install repo=" + appName + "@" + catalogName ));
71+
int longestMsg = "Install as java cmd-line".length();
72+
if (appInfo.nativable) {
73+
longestMsg = "Install as native command-line".length();
74+
}
75+
String javaMsg = JkUtilsString.padEnd("Install as java cmd-line", longestMsg, ' ');
76+
77+
System.out.println(javaMsg+ ": " + JkAnsi.yellow("jeka app: install repo=" + appName + "@" + catalogName));
78+
if (appInfo.nativable) {
79+
System.out.println("Install as native command-line: " + JkAnsi.yellow("jeka app: install repo="
80+
+ appName + "@" + catalogName + " native:"));
81+
}
82+
if (appInfo.bundable) {
83+
String bundableMsg = JkUtilsString.padEnd("Install as app bundle", longestMsg, ' ');
84+
System.out.println(bundableMsg + ": " + JkAnsi.yellow("jeka app: install repo="
85+
+ appName + "@" + catalogName + " bundle:"));
86+
}
7887
System.out.println();
7988
}
8089
}
@@ -95,18 +104,25 @@ private static Map<String, AppInfo> appEntries(JkProperties properties) {
95104
Map<String, AppInfo> result = new TreeMap<>();
96105
for (String appName : appNames) {
97106
Map<String, String> map = JkProperties.ofMap(appPros).getAllStartingWith(appName + ".", false);
98-
AppInfo appInfo = new AppInfo(map.get("desc"), map.get("repo"), map.get("type"));
107+
AppInfo appInfo = new AppInfo(
108+
map.get("desc"),
109+
map.get("repo"),
110+
map.get("type"),
111+
map.get("native"),
112+
map.get("bundle"));
99113
result.put(appName, appInfo);
100114
}
101115
return result;
102116
}
103117

104118
static class AppInfo {
105119

106-
public AppInfo(String description, String repo, String type) {
120+
public AppInfo(String description, String repo, String type, String nativable, String bundable) {
107121
this.description = description;
108122
this.repo = repo;
109123
this.type = type;
124+
this.nativable = "true".equals(nativable);
125+
this.bundable = "true".equals(bundable);
110126
}
111127

112128
public final String description;
@@ -115,12 +131,11 @@ public AppInfo(String description, String repo, String type) {
115131

116132
public final String type;
117133

118-
private String shortenRepoUrl() {
119-
if (repo.startsWith(GITHUB_URL)) {
120-
return repo.substring(GITHUB_URL.length());
121-
}
122-
return repo;
123-
}
134+
public final boolean nativable;
135+
136+
public final boolean bundable;
137+
138+
124139
}
125140

126141

core/src/main/java/dev/jeka/core/tool/builtins/project/BundleKBean.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
""")
3030
public final class BundleKBean extends KBean {
3131

32+
public static final String JPACKAGE_TEMP_DIR_NAME = "jpackage-input";
33+
3234
@JkDoc("If true, a custom JRE is created including only Java modules used by the application.")
3335
public boolean customJre;
3436

@@ -243,7 +245,7 @@ private static List<String[]> toOptionArray(JkMultiValue<String> multiValue) {
243245
private void setProjectOptions(JkJpackage jkPackage) {
244246
JkProject project = projectKBean.project;
245247

246-
Path inputDir = projectKBean.getOutputDir().resolve("jpackage-input");
248+
Path inputDir = projectKBean.getOutputDir().resolve(JPACKAGE_TEMP_DIR_NAME);
247249
createInputDir(inputDir);
248250

249251
String mainClass = project.pack.getOrFindMainClass();

0 commit comments

Comments
 (0)