use crate::push_deadline_and_patience_settings::PUSH_DEADLINE_VARIABLE;
use crate::service_messages::RESTART_COMMAND;
use std::sync::atomic::{AtomicBool, Ordering};
pub const EXAMPLE_SECONDS: u32 = 120;
static IN_SERVICE: AtomicBool = AtomicBool::new(false);
pub fn mark_service_process() {
IN_SERVICE.store(true, Ordering::SeqCst);
}
fn runs_in_service() -> bool {
return IN_SERVICE.load(Ordering::SeqCst);
}
fn set_command() -> String {
return format!("systemctl --user set-environment {PUSH_DEADLINE_VARIABLE}={EXAMPLE_SECONDS}");
}
pub fn extend_clause_for(service: bool) -> String {
if service {
return format!(
"run `{}` and then `{RESTART_COMMAND}` to allow longer (a variable set in a terminal never reaches the commit service)",
set_command()
);
}
return format!("set {PUSH_DEADLINE_VARIABLE} to allow longer");
}
pub fn limit_clause_for(service: bool) -> String {
if service {
return extend_clause_for(true);
}
return format!("{PUSH_DEADLINE_VARIABLE} sets the limit");
}
pub fn extend_clause() -> String {
return extend_clause_for(runs_in_service());
}
pub fn limit_clause() -> String {
return limit_clause_for(runs_in_service());
}
#[cfg(test)]
#[path = "push_deadline_advice_tests.rs"]
mod tests;