furnel

Crates.iofurnel
lib.rsfurnel
version0.1.2
created_at2022-01-24 22:49:32.622177+00
updated_at2025-09-09 13:46:28.145146+00
descriptionA command-line utility to compress files using the brotli algorithm
homepage
repositoryhttps://github.com/pyxy-dk/furnel
max_upload_size
id520473
size44,788
Kristian Thy (kthy)

documentation

README

Furnel

A command-line utility to compress files using the brotli algorithm. Built because I wanted a simple tool to pre-compress files for a static website.

Crates.io Deps.rs Continuous Integration workflow status badge Security Audit workflow status badge License: MIT

Why “Furnel”?

The brotli algorithm is named for Brötli, which is the Swiss German word for bread rolls. Bread rolls are baked in an oven, and an oven in Romansh - another Swiss language - is called furnel.

Furnel logo

Furnel makes brotli.

Installation

From GitHub

  1. Go to the Furnel releases page.
  2. Download the version you need for the OS you have.
  3. Unpack the self-contained executable somewhere on your path.

Using cargo

If you are a Rust developer, you can install the binary from Crates.io:

cargo install furnel

Usage

USAGE:
    furnel [OPTIONS] [--] [BASE_PATH]

ARGS:
    <BASE_PATH>    The base path to search [default: .]

OPTIONS:
    -h, --help
            Print help information

    -l, --license
            Display full license notice

    -m, --only-missing
            Only compress missing files, i.e. those where no corresponding .br
            files are present

    -q, --quiet
            Disable progress indicator

    -r, --recurse
            Recurse into subdirs below the base path

    -x, --extension <EXTENSION>
            File extensions to process, for example `-x css -x html -x js`
            [default: css html js svg txt]

Building

Furnel is written in Rust, so you will need a Rust installation to compile it.

Using GitHub Codespaces or Dev Containers

The easiest way to get started is using the provided dev container configuration:

  1. GitHub Codespaces: Click the "Code" button and select "Create codespace on main"
  2. VS Code Dev Containers: Open the project in VS Code and select "Reopen in Container" when prompted
  3. Other editors: Use any editor that supports dev containers with the .devcontainer/devcontainer.json configuration

The dev container includes:

  • Latest Rust toolchain
  • Rust Analyzer for IDE support
  • Clippy for linting
  • All necessary VS Code extensions pre-configured

Installing Rust Locally

On Windows

Download and run the rustup-init.exe installer. As part of the installation process, it will instruct you to install the Microsoft Visual C++ Build Tools 2019 and provide a link.

On macOS/Linux

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Build, Test and Run

git clone https://github.com/pyxy-dk/furnel.git
cd furnel
cargo build
cargo test
cargo run -- -h
Commit count: 27

cargo fmt