diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 2a5c816..00c3b43 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -1,5 +1,32 @@ # Copilot Instructions +## Prerequisites + +Requires **Java 21+** and **Apache Maven 3.9+**. + +If Maven is not installed, download and extract it (no admin required): + +```powershell +# Download Maven 3.9.8 +Invoke-WebRequest -Uri "https://archive.apache.org/dist/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.zip" -OutFile "$env:TEMP\maven.zip" -UseBasicParsing + +# Extract to .tools/ inside the repo (gitignored) +Expand-Archive -Path "$env:TEMP\maven.zip" -DestinationPath ".tools" -Force + +# Add to PATH for the current session +$env:PATH = "$PWD\.tools\apache-maven-3.9.8\bin;$env:PATH" +``` + +Verify with `mvn -version`. + +Note: `.mvn/jvm.config` includes `--add-opens` to suppress Maven reflection warnings. On Java 22+, additional harmless warnings from Maven's jansi/guava/sisu libraries may appear — these will be resolved in Maven 4.0. + +When running Maven in PowerShell, pipe through `Out-Host` to avoid stderr warnings showing as red errors: + +```powershell +mvn package -DskipTests 2>&1 | Out-Host +``` + ## Build & Test ```bash diff --git a/.gitignore b/.gitignore index bc58bba..67fcfb4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,9 @@ target/ .settings/ dependency-reduced-pom.xml +# Local tool installs (Maven, etc.) +.tools/ + # IDE *.iml .idea/ diff --git a/.mvn/jvm.config b/.mvn/jvm.config new file mode 100644 index 0000000..e52faa7 --- /dev/null +++ b/.mvn/jvm.config @@ -0,0 +1 @@ +--add-opens=java.base/java.lang.reflect=ALL-UNNAMED diff --git a/src/main/java/org/quetoo/installer/Manager.java b/src/main/java/org/quetoo/installer/Manager.java index 8c32431..2914180 100644 --- a/src/main/java/org/quetoo/installer/Manager.java +++ b/src/main/java/org/quetoo/installer/Manager.java @@ -70,7 +70,7 @@ public Observable delta(final Observable indices) { * @return An Observable yielding the synchronized files. */ public Observable sync(final Observable deltas) { - return deltas.concatMap(delta -> delta.getIndex().getSync().sync(delta)) + return deltas.flatMap(delta -> delta.getIndex().getSync().sync(delta)) .doOnNext(file -> { if (file.getParentFile().equals(config.getBin())) { file.setExecutable(true);