1 unstable release

0.1.0 Oct 4, 2023

#821 in Data structures

37 downloads per month
Used in yafsm

MIT/Apache

41KB
386 lines

etc-os-release

Maintenance: passively-maintained License: MIT OR Apache-2.0 crates.io docs.rs Rust: ^1.70.0 GitHub Actions: CI Codecov

A parser and data structures for the /etc/os-release file.

os-release file is used by systemd and other tools to store information about the operating system distribution.

The file is formatted as a list of environment-like shell-compatible variable assignments.

For more information, see os-release(5)

Usage

Add this to your Cargo.toml:

[dependencies]
etc-os-release = "0.1.0"

Examples

Open the os-release file and print the OS name and version:

use etc_os_release::OsRelease;

let os_release = OsRelease::open()?;
println!("{}-{}", os_release.id(), os_release.version_id().unwrap_or_default());

Parse a string containing the contents of the os-release file:

use std::str::FromStr;

use etc_os_release::OsRelease;

let os_release = OsRelease::from_str(r#"
NAME=Fedora
VERSION="32 (Workstation Edition)"
ID=fedora
VERSION_ID=32
PRETTY_NAME="Fedora 32 (Workstation Edition)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:32"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=32
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=32
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
VARIANT="Workstation Edition"
VARIANT_ID=workstation
"#).unwrap();

assert_eq!(os_release.id(), "fedora");
assert_eq!(os_release.version_id(), Some("32"));

Minimum supported Rust version (MSRV)

The minimum supported Rust version is Rust 1.70.0. At least the last 3 versions of stable Rust are supported at any given time.

While a crate is a pre-release status (0.x.x) it may have its MSRV bumped in a patch release. Once a crate has reached 1.x, any MSRV bump will be accompanied by a new minor version.

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

See CONTRIBUTING.md.

Dependencies

~1.1–2.3MB
~48K SLoC