Skip to content

Commit ef4cf66

Browse files
committed
docs: drop stale libfuse/macFUSE references from README
The mount now goes through an in-process NFSv3 server instead of FUSE, so no libfuse/macFUSE install step, fuser mention, or fusermount command applies anymore. Also removes em dashes.
1 parent 3afb127 commit ef4cf66

1 file changed

Lines changed: 11 additions & 23 deletions

File tree

README.md

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
> [!WARNING]
88
> This project is under active development. Interfaces, behavior, and file layout may change without notice, and things may break.
99
10-
FUSE-mount one or more Markdown files as a virtual filesystem: each file gets a top-level directory named after it, headings become subdirectories, and each section's body becomes a `content.md` file. Browse and edit a document with `ls`, `cat`, `grep`, `mkdir`, `rm`, and any regular text editor writes are parsed back into the original Markdown via [mq-markdown](https://github.com/harehare/mq).
10+
NFS-mount one or more Markdown files as a virtual filesystem: each file gets a top-level directory named after it, headings become subdirectories, and each section's body becomes a `content.md` file. Browse and edit a document with `ls`, `cat`, `grep`, `mkdir`, `rm`, and any regular text editor; writes are parsed back into the original Markdown via [mq-markdown](https://github.com/harehare/mq).
1111

1212
Companion tool for [mq](https://github.com/harehare/mq), a jq-like CLI for Markdown.
1313

@@ -27,7 +27,7 @@ front matter
2727
--- -> /a/_frontmatter.yaml (or _frontmatter.toml)
2828
```
2929

30-
A section's `content.md` holds only its own body text up to the *next* heading of any depth, not its subsections' content. Nesting comes from heading depth and document order, not from any indentation convention; a `#` typed inside a deeply-nested section's `content.md` becomes a new top-level directory *within that file* on save, not a nested one.
30+
A section's `content.md` holds only its own body: text up to the *next* heading of any depth, not its subsections' content. Nesting comes from heading depth and document order, not from any indentation convention; a `#` typed inside a deeply-nested section's `content.md` becomes a new top-level directory *within that file* on save, not a nested one.
3131

3232
The top-level per-file directories are fixed at mount time, one per file passed on the command line: `mkdir`/`rmdir`/`rename` at that level (or moving `content.md` between two different mounted files) are not supported (`EPERM`/`ENOENT`/`EOPNOTSUPP`).
3333

@@ -36,39 +36,27 @@ The top-level per-file directories are fixed at mount time, one per file passed
3636
- Editing `content.md` and saving splices the new text back into the source file. Typing a new heading line into it creates a new subdirectory on the next `ls`.
3737
- `mkdir NAME` under a directory adds a new (empty) subheading. Fails with `EEXIST` if a sibling already has that name.
3838
- `rmdir` is POSIX-strict: it only removes an already-empty directory (no subdirectories, empty `content.md`). Plain `rm -r somedir` still deletes a whole section and everything nested inside it, since the shell already unlinks/rmdirs bottom-up.
39-
- Renaming a directory renames the heading's title. Moving a directory to a *different* parent (reparenting) is not supported (`EOPNOTSUPP`) in this version. The top-level, per-file directories can't be created, removed, or renamed either (`EPERM`/`ENOENT`) the set of mounted files is fixed for the life of the mount.
39+
- Renaming a directory renames the heading's title. Moving a directory to a *different* parent (reparenting) is not supported (`EOPNOTSUPP`) in this version. The top-level, per-file directories can't be created, removed, or renamed either (`EPERM`/`ENOENT`); the set of mounted files is fixed for the life of the mount.
4040
- Editors that save via a temp-file-then-rename dance (common with vim's `backupcopy=auto`, VS Code, and other "atomic save" tools) are supported: renaming any file onto a canonical `content.md`/frontmatter path adopts its bytes as that section's new content.
4141

4242
## Known limitations
4343

44-
- **Not byte-exact.** Every save re-renders the *whole* document through mq-markdown. Mounting a file and saving without any edits can still normalize whitespace, blank-line counts, list markers, and table padding mq-markdown's renderer doesn't guarantee a byte-identical round trip. mq-mount skips the rewrite when the render is unchanged from what it last wrote, to avoid *spurious* rewrites, but a first save after mount may differ from the original bytes even with no logical edit.
44+
- **Not byte-exact.** Every save re-renders the *whole* document through mq-markdown. Mounting a file and saving without any edits can still normalize whitespace, blank-line counts, list markers, and table padding; mq-markdown's renderer doesn't guarantee a byte-identical round trip. mq-mount skips the rewrite when the render is unchanged from what it last wrote, to avoid *spurious* rewrites, but a first save after mount may differ from the original bytes even with no logical edit.
4545
- **No external change detection.** If the source file is edited by something else while mounted, that change is not detected or merged; whichever write lands last (through the mount, or externally) wins.
46-
- **Linux and macOS only**, no Windows. macOS needs [macFUSE](https://macfuse.github.io/) installed — see below.
46+
- **Linux and macOS only**, no Windows.
4747
- Cross-directory `mv` (reparenting a heading) is not implemented.
4848

4949
## Installation
5050

51-
Requires either libfuse (Linux) or [macFUSE](https://macfuse.github.io/) (macOS) to be installed *before building*`fuser`'s build script needs `fuse.pc` on `PKG_CONFIG_PATH` just to compile, not only to mount.
52-
53-
```sh
54-
# Linux
55-
sudo apt-get install libfuse-dev # or your distro's equivalent
56-
57-
# macOS
58-
brew install macfuse
59-
# macFUSE installs a system extension; macOS will prompt you to approve it under
60-
# System Settings -> Privacy & Security, and may ask for a restart.
61-
```
62-
63-
Then build from source:
51+
No system packages are required; mounting uses the OS's built-in NFS client.
6452

6553
```sh
6654
git clone https://github.com/harehare/mq-mount
6755
cd mq-mount
6856
cargo build --release
6957
```
7058

71-
The `mount` feature (which pulls in `fuser`) is enabled by default. Building without it (`cargo build --no-default-features`) still compiles and tests the core section-tree logic, but produces a binary that refuses to run — useful for CI or contributing without macFUSE installed locally.
59+
The `mount` feature is enabled by default. Building without it (`cargo build --no-default-features`) still compiles and tests the core section-tree logic, but produces a binary that refuses to run.
7260

7361
## Usage
7462

@@ -82,8 +70,8 @@ echo "more text" >> /tmp/doc-mount/README/Installation/content.md
8270
mkdir /tmp/doc-mount/README/"New Section"
8371

8472
# Unmount (Ctrl-C in the mq-mount process also does this):
85-
umount /tmp/doc-mount # macOS
86-
fusermount -u /tmp/doc-mount # Linux
73+
diskutil unmount /tmp/doc-mount # macOS
74+
umount /tmp/doc-mount # Linux
8775
```
8876

8977
### Options
@@ -106,10 +94,10 @@ Options:
10694
## Development
10795

10896
```sh
109-
# Core logic tests (no macFUSE required)
97+
# Core logic tests
11098
cargo test --no-default-features
11199

112-
# Full build (requires macFUSE/libfuse, see Installation)
100+
# Full build
113101
cargo build
114102
cargo clippy
115103
```

0 commit comments

Comments
 (0)