Crates.io | rnix |
lib.rs | rnix |
version | 0.11.0 |
source | src |
created_at | 2018-08-15 05:53:46.667812 |
updated_at | 2022-11-11 20:27:21.783184 |
description | A Nix parser written in Rust |
homepage | |
repository | https://github.com/nix-community/rnix-parser |
max_upload_size | |
id | 79522 |
size | 1,005,428 |
rnix is a parser for the Nix language written in Rust.
This can be used to manipulate the Nix AST and can for example be used for:
and a lot more!
rnix nowadays uses @matklad's rowan crate to ensure:
Examples can be found in the examples/
directory.
You may also want to see nix-explorer: An example that highlights AST nodes in Nix code. This demonstrates how whitespaces and commands are preserved.
Tests can be run with cargo test
.
In order to update all .expect
-files to the currently expected results,
you may run UPDATE_TESTS=1 cargo test
.
You can parse Nix expressions from standard input using the from-stdin
example.
To try that, run the following in your shell:
echo "[hello nix]" | cargo run --quiet --example from-stdin
Ensure that all PRs that were scheduled for the release are merged (or optionally move them to another milestone).
Close the milestone for the release (if any).
Run cargo test
on master
(or the branch to release from) with all changes being pulled in.
Apply the following patch to nixpkgs-fmt:
diff --git a/Cargo.toml b/Cargo.toml
index 0891350..edad471 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,6 +13,9 @@ repository = "https://github.com/nix-community/nixpkgs-fmt"
[workspace]
members = [ "./wasm" ]
+[patch.crates-io]
+rnix = { path = "/home/ma27/Projects/rnix-parser" }
+
[dependencies]
rnix = "0.9.0"
smol_str = "0.1.17"
and run cargo test
.
While it's planned to add fuzzing to rnix-parser
as well,
nixpkgs-fmt
has a decent test-suite that would've helped to catch regressions in the past.
Note: API changes are OK (and fixes should be contributed to nixpkgs-fmt
), behavioral changes
are not unless explicitly discussed before.
Update the CHANGELOG.md.
Bump the version number in Cargo.toml & re-run cargo build
to refresh the lockfile.
Commit & run nix build
.
Tag the release and push everything.
As soon as the CI has completed, run cargo publish
.
Sadly, the original author of this project, @jD91mZM2 has passed away. His online presence was anonymous and what we have left is his code. This is but one of his many repos that he contributed to.