55 lines
1.6 KiB
Markdown
55 lines
1.6 KiB
Markdown
|
# Fusescript
|
||
|
|
||
|
**scriptable** filesystems via python,lua,awk,shellscript etc.
|
||
|
|
||
|
<center><img src="fusescript.svg" width="200"/></center>
|
||
|
|
||
|
> 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**.<br>
|
||
|
In such case, we'd want to prototype with 1% FUSE-functionality, without being forced into building/debugging C (on an embedded device).<br>
|
||
|
|
||
|
> "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)
|