mfm/README.md

5.6 KiB
Raw Blame History

Build Status License LGPL3.0-or-later Donate on patreon

This project is available on our self-hosted server and on CodeBerg and GitHub as mirrors. For the latest updates and comprehensive version of our project, please visit our primary repository at: https://code.apps.glenux.net/glenux/mfm.

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

Global

Usage: mfm [options]

Global options
    -c, --config FILE                Set configuration file
    -v, --verbose                    Set more verbosity
    -o, --open                       Automatically open directory after mount
    --version                        Show version
    -h, --help                       Show this help

Commands (not implemented yet):
    config                           Manage configuration file
    mapping                          Manage filesystems

Config management

Usage: mfm filesystem [options]

Global options
    -c, --config FILE                Set configuration file
    -v, --verbose                    Set more verbosity
    -o, --open                       Automatically open directory after mount
    --version                        Show version
    -h, --help                       Show this help

Commands (not implemented yet):
    init                             Create init file

Filesystem management

Usage: mfm mapping [options]

Global options
    -c, --config FILE                Set configuration file
    -v, --verbose                    Set more verbosity
    -o, --open                       Automatically open directory after mount
    --version                        Show version
    -h, --help                       Show this help

Commands (not implemented yet):
    list                             List fuse mappings
    create                           Create new fuse mapping
    edit                             Edit fuse mapping
    delete                           Create new fuse mapping

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: "{{env.HOME}}/mnt"

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

  - type: "sshfs"
    name: "Personal - Media Server"
    remote_user: "{{env.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