YANG code formatter
Download the correct pre-compiled binary for your system from Releases.
Alternatively, if you have the Rust toolchain installed:
$ cargo install yangfmt
Pipe YANG source code to STDIN:
$ cat my-model.yang | yangfmt
Or specify a YANG file as the first positional argument:
$ yangfmt my-model.yang
Add -i
to format the given YANG file in place:
$ yangfmt -i my-model.yang
Pretty well tested, should be safe to use!
But please keep your code in version control just in case.
TODO:
-
Automatically sort statements to comply with the canonical order (maybe behind a feature flag?)
-
Fix all corner case crashes
The YangModels repository contains over 80 000 YANG models (totalling over 2.2 GB). When running the formatter on every YANG file in this repository, there are still some corner cases that causes the formatter to crash.
-
Handle comments in between string concatenations. Currently this causes a parse error. For example:
pattern "abcdef" // Comments here + "ghijkl"; // currently causes a parse error
Fortunately I've never seen anybody do this, but it's legal YANG so it should be supported.
- Automatically reflow the contents of
description
andtailf:info
statements to comply with the configured line length. This would be a big developer experience win, but would make it impossible to add pre-formatted contents to these statements (such as ASCII diagrams, lists etc). If this is added, it will definitely be off by default.