5 releases
new 0.3.1 | Jan 18, 2025 |
---|---|
0.3.0 | Dec 24, 2024 |
0.2.2 | Dec 15, 2024 |
0.2.1 | Dec 15, 2024 |
0.2.0 | Nov 28, 2024 |
#104 in Configuration
1,468 downloads per month
82KB
1.5K
SLoC
raugeas
Rust binding for Augeas, a configuration editing tool.
These crates were initially forked from hercules-team/rust-augeas.
Requirements
- Augeas >= 1.13.0
- MSRV: 1.77.0
Design
This library is a low-level binding to the C API of Augeas, with a few abstractions to make it more idiomatic to use in Rust. It does not aim to provide a high-level API to manipulate configuration files, but rather to provide a safe and idiomatic way to interact with Augeas.
lib.rs
:
Augeas bindings for Rust
Augeas is a library for reading, modifying, and writing a structured file, like configuration files.
This library is a low-level binding to the C API of Augeas, with a few abstractions to make it more idiomatic to use in Rust. It does not aim to provide a high-level API to manipulate configuration files, but rather to provide a safe and idiomatic way to interact with Augeas.
The main differences with the C API are:
- Add
clear
andclearm
methods clear values (instead of passing anOption
toset
/setm
). - Add
touch
method to create a node if it does not exist. - Use a
Span
struct to represent the span of a node in a file. - Use a
Position
enum to indicate where to insert a new node. - Use an
Attr
struct to represent the attributes of a node. - Use a
SaveMode
enum to indicate how to save changes.
Usage
In Cargo.toml
:
[dependencies]
raugeas = "0.3.1"
Summary
A typical interaction looks like this:
use raugeas::{Augeas, Flags};
let mut aug = Augeas::init(Some("/"), "", Flags::NONE).unwrap();
// Get the ip address for host.example.com from `/etc/hosts`.
let entry = aug.get("etc/hosts/*[canonical = 'host.example.com']/ip")?;
if let Some(ip) = entry {
println!("The ip for host.example.com is {}", ip);
} else {
println!("There is no entry for host.example.com in /etc/hosts");
}
// Add an alias for host.example.com.
aug.set(
"etc/hosts/*[canonical = 'host.example.com']/alias[last()+1]",
"server.example.com",
)?;
Dependencies
~0–2MB
~41K SLoC