CLI to convert MIME messages into/from Emacs MIME Meta Language, based on mml-lib
- MML to MIME messages compilation (
mml compile --help) - MIME to MML messages interpretation (
mml interpret --help)
MML CLI is written in Rust, and relies on cargo features to enable or disable functionalities. Default features can be found in the features section of the Cargo.toml.
MML CLI can be installed with a pre-built binary from the latest GitHub release:
# As root:
$ curl -sSL https://raw.githubusercontent.com/pimalaya/mml/master/install.sh | sudo sh
# As a regular user:
$ curl -sSL https://raw.githubusercontent.com/pimalaya/mml/master/install.sh | PREFIX=~/.local shMML CLI can be installed with a pre-built binary from the pre-releases GitHub workflow: take the latest build, find the Artifacts section, you should find a pre-built binary matching your OS.
This workflow is triggered everytime a new commit is pushed on master. Such binary is usually more up-to-date than a release, but also less stable.
Pre-built binaries are built with default cargo features. If you want to enable or disable a feature, please use another installation method.
Cargo
MML CLI can be installed with cargo:
$ cargo install mml
# With only IMAP support:
$ cargo install mml --no-default-features --features imapYou can also use the git repository for a more up-to-date (but less stable) version:
$ cargo install --git https://github.com/pimalaya/mml.git mmlNix
MML CLI can be installed with Nix:
$ nix-env -i mmlYou can also use the git repository for a more up-to-date (but less stable) version:
$ nix-env -if https://github.com/pimalaya/mml/archive/master.tar.gz
# or, from within the source tree checkout
$ nix-env -if .If you have the Flakes feature enabled:
$ nix profile install mml
# or, from within the source tree checkout
$ nix profile install
# you can also run MML directly without installing it:
$ nix run mmlSources
MML CLI can be installed from sources.
First you need to install the Rust development environment (see the rust installation documentation):
$ curl https://sh.rustup.rs -sSf | shThen, you need to clone the repository and install dependencies:
$ git clone https://github.com/pimalaya/mml.git
$ cd mml
$ cargo checkNow, you can build MML:
$ cargo build --releaseBinaries are available under the target/release folder.
How to debug MML CLI?
The simplest way is to use --debug and --trace arguments.
The advanced way is based on environment variables:
RUST_LOG=<level>: determines the log level filter, can be one ofoff,error,warn,info,debugandtrace.RUST_SPANTRACE=1: enables the spantrace (a span represent periods of time in which a program was executing in a particular context).RUST_BACKTRACE=1: enables the error backtrace.RUST_BACKTRACE=full: enables the full error backtrace, which include source lines where the error originated from.
Logs are written to the stderr, which means that you can redirect them easily to a file:
RUST_LOG=debug mml 2>/tmp/mml.log
- Chat on Matrix
- News on Mastodon or RSS
- Mail at pimalaya.org@posteo.net
Special thanks to the NLnet foundation and the European Commission that have been financially supporting the project for years:
- 2022: NGI Assure
- 2023: NGI Zero Entrust
- 2024: NGI Zero Core (still ongoing in 2026)
If you appreciate the project, feel free to donate using one of the following providers:
