Skip to content

Commit bc7b308

Browse files
committed
Merge branch 'main' into jackson3
* main: Fix calling JBang command (#14282) .jbang scripts should not be included inside themselves (#14278) Fix typos (#14277) Refactor importDatabase for better readability (#14274) fix jbang (#14276) Feat: Add definition links for TeX Files (#14260) Update preventing module commits (#14273) Fix JabKitLuancher Rename packages in jabkit to start with org.jabref.toolkit to avoid split packages between jabkit and jabgui (#14052). (#14271) Add doi-to-bibtex to examples and JabKit (#14244)
2 parents ee56c1e + a855b1e commit bc7b308

File tree

47 files changed

+581
-311
lines changed

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

+581
-311
lines changed

.github/workflows/tests-code.yml

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,7 @@ jobs:
469469
run: |
470470
echo "cache_key=jbang-$(date +%F)" >> $GITHUB_OUTPUT
471471
- name: Use cache
472+
if: steps.changed-jablib-files.outputs.any_changed != 'true'
472473
uses: actions/cache@v4
473474
with:
474475
path: ~/.jbang
@@ -480,17 +481,17 @@ jobs:
480481
uses: jbangdev/setup-jbang@main
481482

482483
# Build all JBang scripts
483-
- run: jbang build .jbang/CheckoutPR.java
484-
if: steps.changed-jablib-files.outputs.any_changed != 'true'
485-
- run: jbang build .jbang/CloneJabRef.java
486-
if: steps.changed-jablib-files.outputs.any_changed != 'true'
487-
- run: jbang build --fresh .jbang/JabKitLauncher.java
488-
if: steps.changed-jablib-files.outputs.any_changed != 'true'
489-
- run: jbang build --fresh .jbang/JabLsLauncher.java
490-
if: steps.changed-jablib-files.outputs.any_changed != 'true'
491-
- run: jbang build --fresh .jbang/JabSrvLauncher.java
484+
- run: |
485+
for f in .jbang/*.java; do
486+
echo "Building $f..."
487+
jbang build --fresh "$f"
488+
done
492489
if: steps.changed-jablib-files.outputs.any_changed != 'true'
493-
- run: jbang build --fresh jablib-examples/*.java
490+
- run: |
491+
for f in jablib-examples/*.java; do
492+
echo "Building $f..."
493+
jbang build --fresh "$f"
494+
done
494495
if: steps.changed-jablib-files.outputs.any_changed != 'true'
495496
496497
# *Launcher.java should support "--help"
@@ -522,6 +523,7 @@ jobs:
522523
with:
523524
files: |
524525
.jbang/*.java
526+
jabkit/src/main/java/**/*.java
525527
jablib/src/main/java/**/*.java
526528
jablib-examples/**/*.java
527529
files_ignore: |
@@ -553,7 +555,20 @@ jobs:
553555
# We modify the JBang scripts directly to avoid issues with relative paths
554556
for f in ${{ steps.changed-jablib-files.outputs.all_changed_files }}; do
555557
case "$f" in
556-
jablib-examples/*) continue ;; # skip scripts
558+
.jbang/*)
559+
# skip scripts
560+
continue
561+
;;
562+
jablib-examples/*)
563+
# skip scripts
564+
continue
565+
;;
566+
jabkit/*)
567+
# only JabKit needs its modified sources if jabkit was modified
568+
if [ "${{ matrix.script }}" != ".jbang/JabKitLauncher.java" ]; then
569+
continue
570+
fi
571+
;;
557572
esac
558573
echo "//SOURCES ../$f" >> "${{ matrix.script }}"
559574
done

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jablib/src/main/resources/csl-locales
1616

1717
javafx/
1818

19-
# genreated by gg.cmd
19+
# generated by gg.cmd
2020
m2
2121
gg.cmd
2222

.jbang/JabKitLauncher.java

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,21 @@
55
//JAVA 24
66
//RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED
77

8-
//SOURCES ../jabkit/src/main/java/org/jabref/cli/converter/CygWinPathConverter.java
9-
//SOURCES ../jabkit/src/main/java/org/jabref/cli/ArgumentProcessor.java
10-
//SOURCES ../jabkit/src/main/java/org/jabref/cli/CheckConsistency.java
11-
//SOURCES ../jabkit/src/main/java/org/jabref/cli/CheckIntegrity.java
12-
//SOURCES ../jabkit/src/main/java/org/jabref/cli/Convert.java
13-
//SOURCES ../jabkit/src/main/java/org/jabref/cli/Fetch.java
14-
//SOURCES ../jabkit/src/main/java/org/jabref/cli/GenerateBibFromAux.java
15-
//SOURCES ../jabkit/src/main/java/org/jabref/cli/GenerateCitationKeys.java
16-
//SOURCES ../jabkit/src/main/java/org/jabref/cli/Pdf.java
17-
//SOURCES ../jabkit/src/main/java/org/jabref/cli/PdfUpdate.java
18-
//SOURCES ../jabkit/src/main/java/org/jabref/cli/Preferences.java
19-
//SOURCES ../jabkit/src/main/java/org/jabref/cli/Pseudonymize.java
20-
//SOURCES ../jabkit/src/main/java/org/jabref/cli/Search.java
21-
//SOURCES ../jabkit/src/main/java/org/jabref/JabKit.java
8+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/converter/CygWinPathConverter.java
9+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/ArgumentProcessor.java
10+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/CheckConsistency.java
11+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/CheckIntegrity.java
12+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/Convert.java
13+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/DoiToBibtex.java
14+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/Fetch.java
15+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/GenerateBibFromAux.java
16+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/GenerateCitationKeys.java
17+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/Pdf.java
18+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/PdfUpdate.java
19+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/Preferences.java
20+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/Pseudonymize.java
21+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/cli/Search.java
22+
//SOURCES ../jabkit/src/main/java/org/jabref/toolkit/JabKit.java
2223
//FILES tinylog.properties=../jabkit/src/main/resources/tinylog.properties
2324

2425
// REPOS mavencentral,snapshots=https://central.sonatype.com/repository/maven-snapshots/
@@ -38,11 +39,9 @@
3839
//DEPS info.picocli:picocli:4.7.7
3940
//DEPS com.github.ben-manes.caffeine:caffeine:3.2.3
4041

41-
import org.jabref.JabKit;
42-
4342
/// This class is required for [jbang](https://www.jbang.dev/)
4443
public class JabKitLauncher {
4544
public static void main(String[] args) {
46-
org.jabref.JabKit.main(args);
45+
org.jabref.toolkit.JabKit.main(args);
4746
}
4847
}

.jbang/JabLsLauncher.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/LspRangeUtil.java
2424
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/definition/DefinitionProvider.java
2525
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/definition/DefinitionProviderFactory.java
26+
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/definition/LatexDefinitionProvider.java
2627
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/definition/MarkdownDefinitionProvider.java
2728

2829
// REPOS mavencentral,snapshots=https://central.sonatype.com/repository/maven-snapshots/

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
1313

1414
- We added "IEEE" as another option for parsing plain text citations. [#14233](github.com/JabRef/jabref/pull/14233)
1515
- We added automatic date-based groups that create year/month/day subgroups from an entry’s date fields. [#10822](https://github.com/JabRef/jabref/issues/10822)
16+
- We added `doi-to-bibtex` to `JabKit`. [#14244](https://github.com/JabRef/jabref/pull/14244)
1617

1718
### Changed
1819

20+
- `JabKit`: `--porcelain` does not output any logs to the console anymore. [#14244](https://github.com/JabRef/jabref/pull/14244)
1921
- <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>L</kbd> now opens the terminal in the active library directory. [#14130](https://github.com/JabRef/jabref/issues/14130)
2022

2123
### Fixed

docs/code-howtos/faq.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,13 @@ git push
163163
164164
### Prevention
165165
166-
To avoid this, avoid staging using `git add .` from CLI. Preferably use a GUI-based git manager, such as the one built in IntelliJ or open git gui from the command line. Even if you accidentally stage them, don't commit all files, selectively commit the files you touched using the GUI based tool, and push.
166+
To avoid this, avoid staging using any of these commands:
167+
168+
* `git add .`
169+
* `git add jablib/src/main` (or any path prefix)
170+
* `git commit -a`
171+
172+
Preferably use a GUI-based git manager, such as the one built in IntelliJ or open git gui from the command line. Even if you accidentally stage them, don't commit all files, selectively commit the files you touched using the GUI based tool, and push.
167173
168174
## Q: I get `java: package org.jabref.logic.journals does not exist`
169175

docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-11-code-into-ide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ Allow also access for both cases and click "Allow access".
5959

6060
## Wait for IntelliJ IDEA to import the gradle project
6161

62-
IntelliJ shows "Importing 'jabref' Gradle Project" at the lower right corner.
62+
IntelliJ shows "Importing 'jabref' Gradle Project" in the lower right corner.
6363
This will take several minutes.
6464
Wait until this disappears.
6565

jabkit/build.gradle.kts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,14 @@ javaModuleTesting.whitebox(testing.suites["test"]) {
6363
}
6464

6565
application {
66-
mainClass.set("org.jabref.JabKit")
66+
mainClass.set("org.jabref.toolkit.JabKit")
6767
mainModule.set("org.jabref.jabkit")
6868

6969
// Also passed to launcher by java-module-packaging plugin
7070
applicationDefaultJvmArgs = listOf(
71+
// JEP 158: Disable all java util logging
72+
"-Xlog:disable",
73+
7174
// Enable JEP 450: Compact Object Headers
7275
"-XX:+UnlockExperimentalVMOptions", "-XX:+UseCompactObjectHeaders",
7376

jabkit/src/main/java/module-info.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
requires org.jabref.jablib;
33

44
requires info.picocli;
5-
opens org.jabref.cli;
6-
opens org.jabref.cli.converter;
5+
opens org.jabref.toolkit.cli;
6+
opens org.jabref.toolkit.cli.converter;
77

88
requires transitive org.jspecify;
99
requires java.prefs;

jabkit/src/main/java/org/jabref/JabKit.java renamed to jabkit/src/main/java/org/jabref/toolkit/JabKit.java

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.jabref;
1+
package org.jabref.toolkit;
22

33
import java.io.File;
44
import java.io.IOException;
@@ -7,13 +7,11 @@
77
import java.nio.file.Path;
88
import java.util.Arrays;
99
import java.util.List;
10-
import java.util.Map;
1110
import java.util.Set;
1211
import java.util.stream.Collectors;
1312

1413
import javafx.util.Pair;
1514

16-
import org.jabref.cli.ArgumentProcessor;
1715
import org.jabref.logic.importer.SearchBasedFetcher;
1816
import org.jabref.logic.importer.WebFetcher;
1917
import org.jabref.logic.importer.WebFetchers;
@@ -34,6 +32,7 @@
3432
import org.jabref.model.entry.BibEntryTypesManager;
3533
import org.jabref.model.util.DummyFileUpdateMonitor;
3634
import org.jabref.model.util.FileUpdateMonitor;
35+
import org.jabref.toolkit.cli.ArgumentProcessor;
3736

3837
import com.airhacks.afterburner.injection.Injector;
3938
import org.slf4j.Logger;
@@ -58,6 +57,8 @@ public class JabKit {
5857

5958
private static final String JABKIT_BRAND = "JabKit - command line toolkit for JabRef";
6059

60+
/// Note: To test with gradle, use jabkit -> Tasks -> application -> run
61+
/// Use `--args="..."` as parameters to "Run"
6162
public static void main(String[] args) {
6263
initLogging(args);
6364

@@ -143,11 +144,10 @@ public static void initLogging(String[] args) {
143144

144145
// We must configure logging as soon as possible, which is why we cannot wait for the usual
145146
// argument parsing workflow to parse logging options e.g. --debug or --porcelain
147+
boolean isPorcelain = Arrays.stream(args).anyMatch("--porcelain"::equalsIgnoreCase);
146148
Level logLevel;
147149
if (Arrays.stream(args).anyMatch("--debug"::equalsIgnoreCase)) {
148150
logLevel = Level.DEBUG;
149-
} else if (Arrays.stream(args).anyMatch("--porcelain"::equalsIgnoreCase)) {
150-
logLevel = Level.ERROR;
151151
} else {
152152
logLevel = Level.INFO;
153153
}
@@ -163,18 +163,23 @@ public static void initLogging(String[] args) {
163163
return;
164164
}
165165

166+
String fileWriterName;
167+
if (isPorcelain) {
168+
fileWriterName = "writer";
169+
} else {
170+
fileWriterName = "writerFile";
171+
}
172+
166173
// The "Shared File Writer" is explained at
167174
// https://tinylog.org/v2/configuration/#shared-file-writer
168-
Map<String, String> configuration = Map.of(
169-
"level", logLevel.name().toLowerCase(),
170-
"writerFile", "rolling file",
171-
"writerFile.logLevel", logLevel == Level.DEBUG ? "debug" : "info",
172-
// We need to manually join the path, because ".resolve" does not work on Windows, because ":" is not allowed in file names on Windows
173-
"writerFile.file", directory + File.separator + "log_{date:yyyy-MM-dd_HH-mm-ss}.txt",
174-
"writerFile.charset", "UTF-8",
175-
"writerFile.policies", "startup",
176-
"writerFile.backups", "30");
177-
configuration.forEach(Configuration::set);
175+
Configuration.set("level", logLevel.name().toLowerCase());
176+
Configuration.set(fileWriterName, "rolling file");
177+
Configuration.set("%s.logLevel".formatted(fileWriterName), logLevel == Level.DEBUG ? "debug" : "info");
178+
// We need to manually join the path, because ".resolve" does not work on Windows, because ":" is not allowed in file names on Windows
179+
Configuration.set("%s.file".formatted(fileWriterName), directory + File.separator + "log_{date:yyyy-MM-dd_HH-mm-ss}.txt");
180+
Configuration.set("%s.charset".formatted(fileWriterName), "UTF-8");
181+
Configuration.set("%s.policies".formatted(fileWriterName), "startup");
182+
Configuration.set("%s.backups".formatted(fileWriterName), "30");
178183

179184
LOGGER = LoggerFactory.getLogger(JabKit.class);
180185
}

0 commit comments

Comments
 (0)