pub mod bat;
pub mod error;
pub mod units;
use error::PwrError;
use std::path::PathBuf;
pub fn run() -> Result<(), PwrError> {
let bat = bat::Battery::default()?;
println!("{}", bat);
Ok(())
}
fn read_number(path: PathBuf) -> Result<u32, PwrError> {
let value = std::fs::read_to_string(path)?;
let value = value
.trim_end()
.parse::<u32>()
.map_err(|_| PwrError::Error)?;
Ok(value)
}
#[derive(Debug, PartialEq)]
pub enum Type {
Battery,
Mains,
USB,
Invalid,
}
impl std::str::FromStr for Type {
type Err = PwrError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s.trim_end() {
"Battery" => Ok(Type::Battery),
"Mains" => Ok(Type::Mains),
"USB" => Ok(Type::USB),
_ => Err(PwrError::ParseTypeError(s.to_owned())),
}
}
}
#[cfg(test)]
mod tests {
pub mod dirs {
use std::path::PathBuf;
pub fn base() -> PathBuf {
let base_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap();
return PathBuf::from(base_dir);
}
pub fn assets() -> PathBuf {
let mut asset_dir = base();
asset_dir.push("assets");
return asset_dir;
}
pub fn sysfs() -> PathBuf {
let mut sysfs_dir = assets();
sysfs_dir.push("sysfs");
return sysfs_dir;
}
}
#[test]
fn it_works() {
let result = 2 + 2;
assert_eq!(result, 4);
}
}