# Fusescript
**scriptable** filesystems via python,lua,awk,shellscript etc.
> Hackable & prototypable [FUSE3](https://github.com/libfuse/libfuse) script-bindings for your favorite programming language!
## Usage
```bash
$ mkdir /mnt/helloworld
$ fusescript fs/helloworld /mnt/helloworld
$ ls /mnt/helloworld
file1
$ cat /mnt/helloworld/file1
Hello world
```
Profit! The `helloworld`-script serves a 'virtual filesystem' on the fly ❤
> To see how this works, see the [fs/helloworld](fs/helloworld) shellscript, or the [python](fs/helloworld.py), [nodejs](fs/helloworld.js), [AWK](fs/helloworld.awk) script.
## Compile
* nix: `nix-build fusescript.nix`
* debian: `sudo apt-get install libfuse3-dev && make`
* buildroot [embedded]: put this repository in the `packages` directory and select it in 'External' (last menuitem when running `make menuconfig`)
# Rationale
* App-development usually adds various layers of tree-structures
* the filesystem is **already** a tree-structure
**Fusescript** is an exploration into mapping things to a filesystem **asap**.
In such case, we'd want to prototype with 1% FUSE-functionality, without being forced into building/debugging C (on an embedded device).
> "Files are awesome, everything depends on it"
#### Crazy ideas:
* navigate database via the filesystem
* navigate REST api via the filesystem
* navigate fileformat-internals via the filesystem
* you name it!
## Inspired by
* https://github.com/vi/execfuse
* https://github.com/zevweiss/booze
## Projects using fusescript
* [XRSH](https://xrsh.isvery.ninja)