Crates.io | etc-os-release |
lib.rs | etc-os-release |
version | 0.1.1 |
source | src |
created_at | 2023-10-04 13:41:37.777408 |
updated_at | 2024-10-04 06:44:10.792846 |
description | Parse /etc/os-release file |
homepage | |
repository | https://github.com/gifnksm/etc-os-release |
max_upload_size | |
id | 992352 |
size | 72,067 |
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)
Add this to your Cargo.toml
:
[dependencies]
etc-os-release = "0.1.1"
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"));
The minimum supported Rust version is Rust 1.74.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.
This project is licensed under either of
at your option.
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.