ksud: support common & module boot-completed.sh
This commit is contained in:
@@ -195,25 +195,29 @@ pub fn on_post_data_fs() -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn on_services() -> Result<()> {
|
||||
fn run_stage(stage: &str) {
|
||||
utils::umask(0);
|
||||
|
||||
if utils::has_magisk() {
|
||||
warn!("Magisk detected, skip services!");
|
||||
return Ok(());
|
||||
warn!("Magisk detected, skip {stage}");
|
||||
return;
|
||||
}
|
||||
|
||||
if crate::utils::is_safe_mode() {
|
||||
warn!("safe mode, skip service.d scripts");
|
||||
return Ok(());
|
||||
warn!("safe mode, skip {stage} scripts");
|
||||
return;
|
||||
}
|
||||
|
||||
if let Err(e) = crate::module::exec_common_scripts("service.d", false) {
|
||||
warn!("Failed to exec common service scripts: {}", e);
|
||||
if let Err(e) = crate::module::exec_common_scripts(&format!("{stage}.d"), false) {
|
||||
warn!("Failed to exec common {stage} scripts: {e}");
|
||||
}
|
||||
if let Err(e) = crate::module::exec_services() {
|
||||
warn!("Failed to exec service scripts: {}", e);
|
||||
if let Err(e) = crate::module::exec_stage_scripts(stage) {
|
||||
warn!("Failed to exec {stage} scripts: {e}");
|
||||
}
|
||||
}
|
||||
|
||||
pub fn on_services() -> Result<()> {
|
||||
run_stage("service");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -232,6 +236,9 @@ pub fn on_boot_completed() -> Result<()> {
|
||||
std::fs::remove_file(module_update_img).with_context(|| "Failed to remove image!")?;
|
||||
}
|
||||
}
|
||||
|
||||
run_stage("boot-completed");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
@@ -276,10 +276,10 @@ pub fn exec_common_scripts(dir: &str, wait: bool) -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// execute every modules' service.sh
|
||||
pub fn exec_services() -> Result<()> {
|
||||
/// execute every modules' [stage].sh (service.sh, boot-completed.sh)
|
||||
pub fn exec_stage_scripts(stage: &str) -> Result<()> {
|
||||
foreach_active_module(|module| {
|
||||
let service = module.join("service.sh");
|
||||
let service = module.join(format!("{stage}.sh"));
|
||||
if !service.exists() {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user