Metadata-Version: 2.1
Name: remarkable_update_fuse
Version: 1.0.2
Summary: Userspace filesystem for remarkable update files
Author-email: Eeems <eeems@eeems.email>
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: System :: Filesystems
Classifier: Topic :: Utilities
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cryptography==41.0.7
Requires-Dist: fuse-python==1.0.7
Requires-Dist: protobuf==4.21.1
Requires-Dist: ext4==1.0.1

[![remarkable_update_fuse on PyPI](https://img.shields.io/pypi/v/remarkable_update_fuse)](https://pypi.org/project/remarkable_update_fuse)

# reMarkable Update FUSE
Mount remarkable update files using FUSE

## Usage

```bash
pip install remarkable_update_fuse
mkdir /mnt/signed /mnt/image
rmufuse path/to/update_file.signed /mnt/signed
```

## Known Issues

- Will report checksum errors for Directory inode, even though they are fine
- Will report checksum errors for extent headers, even though they are fine

## Programatic Usage

```python
from ext4 import Volume
from remarkable_update_fuse import UpdateImage

image = UpdateImage("path/to/update/file.signed")

# Extract raw ext4 image
with open("image.ext4", "wb") as f:
    f.write(image.read())

# Extract specific file
volume = Volume(image)
inode = volume.inode_at("etc", "version")
with open("version", "wb") as f:
    f.write(inode.open().read())
```

## Building
Dependencies:
- curl
- python
- python-build
- python-pip
- python-pipx
- python-venv
- python-wheel

```bash
make # Build wheel and sdist packages in dist/
make wheel # Build wheel package in dist/
make sdist # Build sdist package in dist/
make dev # Test mounting 2.15.1.1189 to .venv/mnt
make install # Build wheel and install it with pipx or pip install --user
```
