🟢 🔁 | Simple command-line helper for FUSE filesystems (sshfs, gocryptfs, etc.)
Find a file
Glenn f05ee6b1b6
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
fix: wrong comparison
2023-11-20 12:40:13 +01:00
.reuse fix: add SPDX headers 2023-10-25 14:07:15 +02:00
doc doc: add asciinema demo recording as lfs 2023-10-25 14:04:28 +02:00
LICENSES fix: add SPDX headers 2023-10-25 14:07:15 +02:00
scripts fix: split vagrant provisioning into multiple parts 2023-11-02 16:55:29 +01:00
src fix: wrong comparison 2023-11-20 12:40:13 +01:00
.drone.yml ci: switch to alpine for static linking 2023-11-18 22:32:22 +00:00
.gitattributes doc: add asciinema demo recording as lfs 2023-10-25 14:04:28 +02:00
.gitignore doc: add asciinema demo recording as lfs 2023-10-25 14:04:28 +02:00
Makefile fix: add SPDX headers 2023-10-25 14:07:15 +02:00
README.md doc: add required dependencies & debian command 2023-11-02 16:58:39 +01:00
shard.lock feat: extract version number from shard+git history 2023-11-18 23:55:23 +01:00
shard.yml chore: bump version 2023-11-19 00:05:41 +01:00
Vagrantfile fix: split vagrant provisioning into multiple parts 2023-11-02 16:55:29 +01:00

Build Status

Minimalist Fuse Manager (MFM)

MFM is a Crystal-lang CLI designed to streamline the management of various FUSE filesystems, such as sshfs, gocryptfs, httpdirfs, and more. Through its user-friendly interface, users can effortlessly mount and unmount filesystems, get real-time filesystem status, and handle errors proficiently.

Prerequisites & Dependencies

Before using MFM, make sure the following tools are installed on your system:

For Debian/Ubuntu you can use the following command:

$ sudo apt-get update && sudo apt-get install libpcre3 libevent-2.1-7 fzf gocryptfs httpdirfs sshfs

Building from source

To build from source, you'll also need:

For Debian/Ubuntu you can use the following command:

$ sudo apt-get update && sudo apt-get install libpcre3-dev libevent-2.1-dev

Installation

1. From Source

  1. Clone or download the source code.
  2. Navigate to the source directory.
  3. Run shards install to fetch dependencies.
  4. Compile using shards build.
  5. The compiled binary will be in the bin directory.

2. Binary Download

Alternatively, download a pre-compiled binary version of MFM.

Usage

Command Line Options

Usage: mfm [options]

Global options:
    -c, --config FILE                Specify configuration file
    -h, --help                       Display this help

Commands (not implemented yet):
    create                           Add a new filesystem
    delete                           Remove an existing filesystem
    edit                             Modify the configuration

Demo

Configuration

MFM uses a YAML configuration file, typically found at ~/.config/mfm.yml, to detail the filesystem names, types, and respective configurations.

YAML File Format

version: "1"

global:
  mountpoint: "/home/user/mnt/{{name}}"

filesystems:
  - type: "gocryptfs"
    name: "Work - SSH Keys"
    encrypted_path: "/home/user/.ssh/keyring.work"

  - type: "sshfs"
    name: "Personal - Media Server"
    remote_user: "user"
    remote_host: "mediaserver.local"
    remote_path: "/mnt/largedisk/music"
    remote_port: 22

  - type: httpdirfs
    name: "Debian Repository"
    url: "http://ftp.debian.org/debian/"

  # Add more filesystems as needed

Contribution Guidelines

Contributing to MFM:

  1. Fork the Repository: Start by forking MFM's repository.
  2. Create a Feature Branch: Develop each feature or fix in its own branch.
  3. Commit Changes: Provide clear and informative commit messages.
  4. Run Tests: Ensure that all features are operational.
  5. Push to Your Fork: Push your changes to your fork on GitHub.
  6. Submit a Pull Request: Begin a pull request to the main repository and explain your changes.
  7. Review: Await feedback from the maintainers and respond as necessary.

By contributing, you agree to our code of conduct and license terms.

Authors and Contributors

  • Glenn Y. Rolland - Initial Work

Inspired By

License

GNU GPL-3