use derive_builder::Builder;
use thiserror::Error;
mod sys;
#[cfg(feature = "capi")]
pub mod capi;
pub use sys::Error as SystemError;
#[derive(Error, Debug)]
pub enum Error {
#[error("builder: {0}")]
Builder(#[from] BuilderError),
#[error("system: {0}")]
System(#[from] SystemError),
}
pub type Result<T, E = Error> = std::result::Result<T, E>;
#[derive(Builder, Debug)]
#[builder(public, name = "Builder", build_fn(private))]
#[allow(dead_code)] struct Options {
#[builder(default)]
display: bool,
#[builder(default)]
idle: bool,
#[builder(default)]
sleep: bool,
#[builder(setter(into), default = "\"User requested\".to_string()")]
reason: String,
#[builder(setter(into), default = "\"keepawake-rs\".to_string()")]
app_name: String,
#[builder(
setter(into),
default = "\"io.github.segevfiner.keepawake-rs\".to_string()"
)]
app_reverse_domain: String,
}
impl Builder {
pub fn create(&self) -> Result<KeepAwake> {
Ok(KeepAwake {
_imp: sys::KeepAwake::new(self.build()?)?,
})
}
}
pub struct KeepAwake {
_imp: sys::KeepAwake,
}