1#[cfg(feature = "logger")]
2pub mod logger;
3
4#[cfg(feature = "panic_handle")]
5pub mod painc;
6
7pub mod time;
8pub use anyhow;
9pub use chrono;
10pub use serde;
11pub use time::*;
12
13pub type AppResult<T = ()> = std::result::Result<T, anyhow::Error>;
14
15use std::time::Duration;
16#[cfg(target_os = "linux")]
17use tokio::process::Command;
18
19pub fn after_app_exist(sec: u8) {
21 tokio::spawn(async move {
22 log::info!("程序退出,{} 秒后重启", sec);
23 tokio::time::sleep(Duration::from_secs(sec as u64)).await;
24 std::process::exit(1);
25 });
26}
27
28pub fn after_reboot(sec: u8) {
30 #[cfg(target_os = "linux")]
31 {
32 tokio::spawn(async move {
33 log::info!("程序重启,{} 秒后重启", sec);
34 tokio::time::sleep(Duration::from_secs(sec as u64)).await;
35 let status = Command::new("reboot").status().await.unwrap();
36 if status.success() {
37 log::info!("程序重启成功");
38 } else {
39 log::error!("程序重启失败");
40 }
41 });
42 }
43 #[cfg(target_os = "windows")]
44 log::warn!("windows系统不支持自动重启:{}", sec)
45}