Skip to content

Commit e8524e1

Browse files
Merge branch 'release/0.3.0'
2 parents b1b04df + 661ae25 commit e8524e1

File tree

94 files changed

+3984
-617
lines changed

Some content is hidden

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

94 files changed

+3984
-617
lines changed

.github/workflows/build.yml

+25-26
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ jobs:
99
runs-on: ubuntu-latest
1010
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
1111
steps:
12-
- uses: actions/checkout@v2
13-
- uses: actions/setup-java@v2
12+
- uses: actions/checkout@v3
13+
- uses: actions/setup-java@v3
1414
with:
1515
java-version: 19
1616
distribution: 'zulu'
@@ -20,8 +20,8 @@ jobs:
2020
sudo apt-get update
2121
sudo apt-get install fuse3 libfuse3-dev
2222
- name: Maven build
23-
run: mvn -B verify -Plinux-amd64
24-
- uses: actions/upload-artifact@v2
23+
run: mvn -B verify
24+
- uses: actions/upload-artifact@v3
2525
with:
2626
name: coverage-linux-amd64
2727
path: jfuse-tests/target/site/jacoco-aggregate/jacoco.xml
@@ -32,79 +32,78 @@ jobs:
3232
runs-on: macos-10.15
3333
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
3434
steps:
35-
- uses: actions/checkout@v2
36-
- uses: actions/setup-java@v2
35+
- uses: actions/checkout@v3
36+
- uses: actions/setup-java@v3
3737
with:
3838
java-version: 19
3939
distribution: 'zulu'
4040
cache: 'maven'
4141
- name: Setup fuse
4242
run: brew install macfuse
4343
- name: Maven build
44-
run: mvn -B verify -Pmac
45-
- uses: actions/upload-artifact@v2
44+
run: mvn -B verify
45+
- uses: actions/upload-artifact@v3
4646
with:
4747
name: coverage-mac
4848
path: jfuse-tests/target/site/jacoco-aggregate/jacoco.xml
4949
retention-days: 3
5050

51-
win-amd64:
52-
name: Test jfuse-win-amd64
51+
win:
52+
name: Test jfuse-win
5353
runs-on: windows-latest
5454
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
5555
steps:
56-
- uses: actions/checkout@v2
57-
- uses: actions/setup-java@v2
56+
- uses: actions/checkout@v3
57+
- uses: actions/setup-java@v3
5858
with:
5959
java-version: 19
6060
distribution: 'zulu'
6161
cache: 'maven'
6262
- name: Setup fuse
6363
run: choco install winfsp --version 1.10.22006 -y
6464
- name: Maven build
65-
run: mvn -B verify -Pwin-amd64
66-
- uses: actions/upload-artifact@v2
65+
run: mvn -B verify
66+
- uses: actions/upload-artifact@v3
6767
with:
68-
name: coverage-win-amd64
68+
name: coverage-win
6969
path: jfuse-tests/target/site/jacoco-aggregate/jacoco.xml
7070
retention-days: 3
7171

7272
sonarcloud:
7373
name: Run SonarCloud Analysis
74-
needs: [linux-amd64, mac, win-amd64]
74+
needs: [linux-amd64, mac, win]
7575
runs-on: ubuntu-latest
7676
steps:
77-
- uses: actions/checkout@v2
77+
- uses: actions/checkout@v3
7878
with:
7979
fetch-depth: 0
80-
- uses: actions/setup-java@v2
80+
- uses: actions/setup-java@v3
8181
with:
8282
java-version: 19
8383
distribution: 'zulu'
8484
cache: 'maven'
8585
- name: Cache SonarCloud packages
86-
uses: actions/cache@v2
86+
uses: actions/cache@v3
8787
with:
8888
path: ~/.sonar/cache
8989
key: ${{ runner.os }}-sonar
9090
restore-keys: ${{ runner.os }}-sonar
91-
- uses: actions/download-artifact@v2
91+
- uses: actions/download-artifact@v3
9292
with:
9393
name: coverage-linux-amd64
9494
path: coverage/linux-amd64
95-
- uses: actions/download-artifact@v2
95+
- uses: actions/download-artifact@v3
9696
with:
9797
name: coverage-mac
9898
path: coverage/mac
99-
- uses: actions/download-artifact@v2
99+
- uses: actions/download-artifact@v3
100100
with:
101-
name: coverage-win-amd64
102-
path: coverage/win-amd64
101+
name: coverage-win
102+
path: coverage/win
103103
- name: Analyze
104104
run: >
105105
mvn -B compile -DskipTests
106106
org.sonarsource.scanner.maven:sonar-maven-plugin:sonar
107-
-Plinux-amd64,linux-aarch64,mac,win-amd64
108107
-Dsonar.projectKey=cryptomator_jfuse
109108
-Dsonar.coverage.jacoco.xmlReportPaths=${GITHUB_WORKSPACE}/coverage/**/jacoco.xml
110109
-Dsonar.organization=cryptomator
@@ -119,7 +118,7 @@ jobs:
119118
runs-on: ubuntu-latest
120119
steps:
121120
- name: Create Release
122-
uses: actions/create-release@v1
121+
uses: actions/create-release@v1 #REMARK: action/create-release is unmaintend
123122
env:
124123
GITHUB_TOKEN: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }} # release as "cryptobot"
125124
with:

.github/workflows/publish-central.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ jobs:
1010
publish:
1111
runs-on: ubuntu-latest
1212
steps:
13-
- uses: actions/checkout@v2
13+
- uses: actions/checkout@v3
1414
with:
1515
ref: "refs/tags/${{ github.event.inputs.tag }}"
16-
- uses: actions/setup-java@v2
16+
- uses: actions/setup-java@v3
1717
with:
1818
java-version: 19
1919
distribution: 'zulu'
@@ -26,7 +26,7 @@ jobs:
2626
- name: Enforce project version ${{ github.event.inputs.tag }}
2727
run: mvn versions:set -B -DnewVersion=${{ github.event.inputs.tag }}
2828
- name: Deploy
29-
run: mvn deploy -B -DskipTests -Psign,deploy-central,linux-amd64,linux-aarch64,mac,win-amd64 --no-transfer-progress
29+
run: mvn deploy -B -DskipTests -Psign,deploy-central --no-transfer-progress
3030
env:
3131
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
3232
MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}

.github/workflows/publish-github.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ jobs:
77
runs-on: ubuntu-latest
88
if: startsWith(github.ref, 'refs/tags/') # only allow publishing tagged versions
99
steps:
10-
- uses: actions/checkout@v2
11-
- uses: actions/setup-java@v2
10+
- uses: actions/checkout@v3
11+
- uses: actions/setup-java@v3
1212
with:
1313
java-version: 19
1414
distribution: 'zulu'
@@ -18,7 +18,7 @@ jobs:
1818
- name: Enforce project version ${{ github.event.release.tag_name }}
1919
run: mvn versions:set -B -DnewVersion=${{ github.event.release.tag_name }}
2020
- name: Deploy
21-
run: mvn deploy -B -DskipTests -Psign,deploy-github,linux-amd64,linux-aarch64,mac,win-amd64 --no-transfer-progress
21+
run: mvn deploy -B -DskipTests -Psign,deploy-github --no-transfer-progress
2222
env:
2323
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2424
MAVEN_GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}

.idea/runConfigurations/RandomFileSystem.xml

+3-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations/WindowsMirrorFileSystem.xml

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

+20-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
[![Build](https://github.com/cryptomator/jfuse/actions/workflows/build.yml/badge.svg)](https://github.com/cryptomator/jfuse/actions/workflows/build.yml)
2+
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=cryptomator_jfuse&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=cryptomator_jfuse)
3+
[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=cryptomator_jfuse&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=cryptomator_jfuse)
4+
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=cryptomator_jfuse&metric=coverage)](https://sonarcloud.io/summary/new_code?id=cryptomator_jfuse)
25
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=cryptomator_jfuse&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=cryptomator_jfuse)
36

47
# jFUSE
@@ -31,25 +34,25 @@ Not all [`fuse_operations`](https://libfuse.github.io/doxygen/structfuse__operat
3134
| rename | :white_check_mark: |
3235
| link | :x: |
3336
| chmod | :white_check_mark: |
34-
| chown | :x: |
37+
| chown | :white_check_mark: |
3538
| truncate | :white_check_mark: |
3639
| ~ftruncate~ | use truncate |
3740
| ~utime~ | use utimens |
3841
| open | :white_check_mark: |
3942
| read | :white_check_mark: |
4043
| write | :white_check_mark: |
4144
| statfs | :white_check_mark: |
42-
| flush | :x: |
45+
| flush | :white_check_mark: |
4346
| release | :white_check_mark: |
44-
| fsync | :x: |
47+
| fsync | :white_check_mark: |
4548
| setxattr | :x: |
4649
| getxattr | :x: |
4750
| listxattr | :x: |
4851
| removexattr | :x: |
4952
| opendir | :white_check_mark: |
5053
| readdir | :white_check_mark: |
5154
| releasedir | :white_check_mark: |
52-
| fsyncdir | :x: |
55+
| fsyncdir | :white_check_mark: |
5356
| init | :white_check_mark: |
5457
| destroy | :white_check_mark: |
5558
| access | :white_check_mark: (ignored on Windows) |
@@ -70,6 +73,14 @@ Not all [`fuse_operations`](https://libfuse.github.io/doxygen/structfuse__operat
7073

7174
Usage examples can be found under [`/jfuse-examples/`](jfuse-examples). You basically need to implement `FuseOperations` and pass it to the `Fuse.builder()`:
7275

76+
```xml
77+
<dependency>
78+
<groupId>org.cryptomator</groupId>
79+
<artifactId>jfuse</artifactId>
80+
<version>x.y.z</version>
81+
</dependency>
82+
```
83+
7384
```java
7485
var builder = Fuse.builder();
7586
var fs = new MyFileSystem(builder.errno());
@@ -92,10 +103,10 @@ java -p path/to/mods \
92103

93104
Due to slight differences in memory layout, each platform needs its own implementation. Currently, the following operating systems and architectures are supported:
94105

95-
| | Linux | Mac (macFUSE) | Windows (WinFSP) |
96-
|--------|--------------------------------------------|--------------------------|--------------------------------------|
97-
| x86_64 | [jfuse-linux-amd64](jfuse-linux-amd64) | [jfuse-mac](jfuse-mac) | [jfuse-win-amd64](jfuse-win-amd64) |
98-
| arm64 | [jfuse-linux-aarch64](jfuse-linux-aarch64) | [jfuse-mac](jfuse-mac) | |
106+
| | Linux | Mac (macFUSE) | Windows (WinFSP) |
107+
|--------|--------------------------------------------|--------------------------|------------------------|
108+
| x86_64 | [jfuse-linux-amd64](jfuse-linux-amd64) | [jfuse-mac](jfuse-mac) | [jfuse-win](jfuse-win) |
109+
| arm64 | [jfuse-linux-aarch64](jfuse-linux-aarch64) | [jfuse-mac](jfuse-mac) | [jfuse-win](jfuse-win) |
99110

100111
## Building
101112

@@ -109,7 +120,7 @@ Each platform has its own module. In rare cases, we need to update jextracted cl
109120

110121
In most cases this requires you to run the build on the target platform, as you need access to its system-specific header files and (most likely) build tools. See module readme for specific requirements.
111122

112-
In order to run `jextract`, use the corresponding Maven profile (`-Pjextract`).
123+
In order to run `jextract`, use the corresponding Maven profile (e.g. `-Pjextract-win`).
113124

114125
### Adding a new platform
115126

jfuse-api/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
55
<parent>
66
<groupId>org.cryptomator</groupId>
7-
<artifactId>jfuse</artifactId>
8-
<version>0.2.1</version>
7+
<artifactId>jfuse-parent</artifactId>
8+
<version>0.3.0</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111
<artifactId>jfuse-api</artifactId>

jfuse-api/src/main/java/module-info.java

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
/**
44
* Defines the API to create a FUSE file system in Java.
5+
*
6+
* @uses FuseBuilder FUSE builder to build FUSE file system instances
57
*/
68
module org.cryptomator.jfuse.api {
79
requires static org.jetbrains.annotations;

jfuse-api/src/main/java/org/cryptomator/jfuse/api/Fuse.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33

44
import org.jetbrains.annotations.Blocking;
5-
import org.jetbrains.annotations.BlockingExecutor;
65
import org.jetbrains.annotations.MustBeInvokedByOverriders;
76

87
import java.lang.foreign.MemorySession;
@@ -47,7 +46,7 @@ public static FuseBuilder builder() {
4746
/**
4847
* Mounts this fuse file system at the given mount point.
4948
* <p>
50-
* This method blocks until either {@link FuseOperations#init(FuseConnInfo)} completes or an error occurs.
49+
* This method blocks until either {@link FuseOperations#init(FuseConnInfo, FuseConfig)} completes or an error occurs.
5150
*
5251
* @param progName The program name used to construct a usage message and to derive a fallback for <code>-ofsname=...</code>
5352
* @param mountPoint mount point

0 commit comments

Comments
 (0)