Skip to content

pimalaya/mml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📫 MML CLI GitHub release Matrix

CLI to convert MIME messages into/from Emacs MIME Meta Language, based on mml-lib

Features

  • 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.

Installation

From release

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 sh

From CI

MML CLI can be installed with a pre-built binary from the pre-release 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.

Other

Cargo

MML CLI can be installed with cargo:

$ cargo install mml

# With only IMAP support:
$ cargo install mml --no-default-features --features imap

You 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 mml
Nix

MML CLI can be installed with Nix:

$ nix-env -i mml

You 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 mml
Sources

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 | sh

Then, you need to clone the repository and install dependencies:

$ git clone https://github.com/pimalaya/mml.git
$ cd mml
$ cargo check

Now, you can build MML:

$ cargo build --release

Binaries are available under the target/release folder.

FAQ

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 of off, error, warn, info, debug and trace.
  • 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

Sponsoring

nlnet

Special thanks to the NLnet foundation and the European Commission that helped the project to receive financial support from various programs:

If you appreciate the project, feel free to donate using one of the following providers:

GitHub Ko-fi Buy Me a Coffee Liberapay thanks.dev PayPal