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