Use self detection of Linux distribution

This commit is contained in:
Roey Darwish Dror
2018-06-07 16:19:11 +03:00
parent 200a34d9f8
commit 63af73ead6
4 changed files with 59 additions and 108 deletions

43
src/linux.rs Normal file
View File

@@ -0,0 +1,43 @@
use failure;
use std::fs;
#[derive(Copy, Clone, Debug)]
pub enum Distribution {
Arch,
CentOS,
Fedora,
Debian,
Ubuntu,
}
#[derive(Debug, Fail)]
#[fail(display = "Unknown Linux Distribution")]
struct UnknownLinuxDistribution;
impl Distribution {
pub fn detect() -> Result<Self, failure::Error> {
let content = fs::read_to_string("/etc/os-release")?;
if content.contains("Arch") {
return Ok(Distribution::Arch);
}
if content.contains("CentOS") {
return Ok(Distribution::CentOS);
}
if content.contains("Fedora") {
return Ok(Distribution::Fedora);
}
if content.contains("Ubuntu") {
return Ok(Distribution::Ubuntu);
}
if content.contains("Debian") {
return Ok(Distribution::Debian);
}
Err(UnknownLinuxDistribution.into())
}
}