#format #code-block #org #markdown

app cbfmt

A tool to format codeblocks inside markdown, org, and restructuredtext documents

4 releases (2 breaking)

0.2.0 Aug 31, 2022
0.1.4 Aug 23, 2022
0.1.3 Aug 15, 2022
0.0.0 Jul 28, 2022

#1548 in Development tools

MIT license

33KB
804 lines

cbfmt (codeblock format)

A tool to format codeblocks inside markdown, org, and restructuredtext documents.
It iterates over all codeblocks, and formats them with the tool(s) specified for the language of the block.

Install

Download from GitHub

Download the latest release binaries from github.com/lukas-reineke/cbfmt/releases

Cargo

cargo install cbfmt

Build from source

  1. Clone this repository
  2. Build with cargo
git clone https://github.com/lukas-reineke/cbfmt.git && cd cbfmt
cargo install --path .

This will install cbfmt in your ~/.cargo/bin. Make sure to add ~/.cargo/bin directory to your PATH variable.

Config

A configuration file is required. By default the file is called .cbfmt.toml

Example:

[languages]
rust = ["rustfmt"]
go = ["gofmt"]
lua = ["stylua -s -"]
python = ["black --fast -"]

Sections

languages

This section specifies which commands should run for which language.
Each entry is the name of the language as the key, and a list of format commands to run in sequence as the value. Each format command needs to read from stdin and write to stdout.

Usage

With arguments

You can run cbfmt on files and or directories by passing them as arguments.

cbfmt [OPTIONS] [file/dir/glob]...

The default behaviour checks formatting for all files that were passed as arguments. If all files are formatted correctly, it exits with status code 0, otherwise it exits with status code 1.

When a directory is passed as an argument, cbfmt will recursively run on all files in that directory which have a valid parser and are not ignored by git.

With stdin

If no arguments are specified, cbfmt will read from stdin and write the format result to stdout.

cbfmt [OPTIONS] < [file]

Without arguments and stdin

If there are no arguments and nothing is written to stdin, cbfmt will print the help text and exit.

Options

These are the most important options. To see all options, please run cbfmt --help

check -c|--check

Works the same as the default behaviour, but only prints the path to files that fail.

write -w|--write

Writes the format result back into the files.

parser -p|--parser

Specifies which parser to use. This is inferred from the file ending when possible.

Dependencies

~17–28MB
~502K SLoC