From 552d58376fbb041e1c48f0a0f6571ee03ddc9c25 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Sat, 4 Apr 2026 10:04:00 -0300 Subject: [PATCH] fix: Fix compilation errors from path refactoring - bootstrap_utils.rs: Change Vec<(&'static str,...)> to Vec<(String,...)> to avoid dangling references - bootstrap_manager.rs: Use name.as_str() for safe_pkill - setup.rs: Use PathBuf instead of Path::new with format! - directory/bootstrap.rs: Use PathBuf for pat_dir - main.rs: Use PathBuf for vault_init_path_early --- src/core/bootstrap/bootstrap_manager.rs | 3 +- src/core/bootstrap/bootstrap_utils.rs | 48 ++++++++++++------------- src/core/package_manager/setup.rs | 3 +- src/directory/bootstrap.rs | 5 +-- src/main.rs | 3 +- 5 files changed, 32 insertions(+), 30 deletions(-) diff --git a/src/core/bootstrap/bootstrap_manager.rs b/src/core/bootstrap/bootstrap_manager.rs index 6e729846..c430d8fa 100644 --- a/src/core/bootstrap/bootstrap_manager.rs +++ b/src/core/bootstrap/bootstrap_manager.rs @@ -36,8 +36,7 @@ impl BootstrapManager { let processes = crate::core::bootstrap::bootstrap_utils::get_processes_to_kill(); for (name, args) in processes { - // safe_pkill expects &[&str] for pattern, so convert the name - safe_pkill(&[name], &args); + safe_pkill(&[name.as_str()], &args); } // Give processes time to terminate diff --git a/src/core/bootstrap/bootstrap_utils.rs b/src/core/bootstrap/bootstrap_utils.rs index 6098f98c..c07f2da6 100644 --- a/src/core/bootstrap/bootstrap_utils.rs +++ b/src/core/bootstrap/bootstrap_utils.rs @@ -4,32 +4,32 @@ use crate::security::command_guard::SafeCommand; use log::{debug, info, warn}; /// Get list of processes to kill (only used in dev with local botserver-stack) -pub fn get_processes_to_kill() -> Vec<(&'static str, Vec<&'static str>)> { +pub fn get_processes_to_kill() -> Vec<(String, Vec<&'static str>)> { let stack = get_stack_path(); vec![ - (&format!("{}/bin/vault", stack), vec!["-9", "-f"]), - (&format!("{}/bin/tables", stack), vec!["-9", "-f"]), - (&format!("{}/bin/drive", stack), vec!["-9", "-f"]), - (&format!("{}/bin/cache", stack), vec!["-9", "-f"]), - (&format!("{}/bin/directory", stack), vec!["-9", "-f"]), - (&format!("{}/bin/llm", stack), vec!["-9", "-f"]), - (&format!("{}/bin/email", stack), vec!["-9", "-f"]), - (&format!("{}/bin/proxy", stack), vec!["-9", "-f"]), - (&format!("{}/bin/dns", stack), vec!["-9", "-f"]), - (&format!("{}/bin/meeting", stack), vec!["-9", "-f"]), - (&format!("{}/bin/vector_db", stack), vec!["-9", "-f"]), - (&format!("{}/bin/zitadel", stack), vec!["-9", "-f"]), - (&format!("{}/bin/alm", stack), vec!["-9", "-f"]), - ("forgejo", vec!["-9", "-f"]), - ("caddy", vec!["-9", "-f"]), - ("postgres", vec!["-9", "-f"]), - ("minio", vec!["-9", "-f"]), - ("redis-server", vec!["-9", "-f"]), - ("zitadel", vec!["-9", "-f"]), - ("llama-server", vec!["-9", "-f"]), - ("stalwart", vec!["-9", "-f"]), - ("vault server", vec!["-9", "-f"]), - ("watcher", vec!["-9", "-f"]), + (format!("{}/bin/vault", stack), vec!["-9", "-f"]), + (format!("{}/bin/tables", stack), vec!["-9", "-f"]), + (format!("{}/bin/drive", stack), vec!["-9", "-f"]), + (format!("{}/bin/cache", stack), vec!["-9", "-f"]), + (format!("{}/bin/directory", stack), vec!["-9", "-f"]), + (format!("{}/bin/llm", stack), vec!["-9", "-f"]), + (format!("{}/bin/email", stack), vec!["-9", "-f"]), + (format!("{}/bin/proxy", stack), vec!["-9", "-f"]), + (format!("{}/bin/dns", stack), vec!["-9", "-f"]), + (format!("{}/bin/meeting", stack), vec!["-9", "-f"]), + (format!("{}/bin/vector_db", stack), vec!["-9", "-f"]), + (format!("{}/bin/zitadel", stack), vec!["-9", "-f"]), + (format!("{}/bin/alm", stack), vec!["-9", "-f"]), + ("forgejo".to_string(), vec!["-9", "-f"]), + ("caddy".to_string(), vec!["-9", "-f"]), + ("postgres".to_string(), vec!["-9", "-f"]), + ("minio".to_string(), vec!["-9", "-f"]), + ("redis-server".to_string(), vec!["-9", "-f"]), + ("zitadel".to_string(), vec!["-9", "-f"]), + ("llama-server".to_string(), vec!["-9", "-f"]), + ("stalwart".to_string(), vec!["-9", "-f"]), + ("vault server".to_string(), vec!["-9", "-f"]), + ("watcher".to_string(), vec!["-9", "-f"]), ] } diff --git a/src/core/package_manager/setup.rs b/src/core/package_manager/setup.rs index f844ec77..e26c0656 100644 --- a/src/core/package_manager/setup.rs +++ b/src/core/package_manager/setup.rs @@ -138,7 +138,8 @@ impl DirectorySetup { } // Also check the legacy location - let legacy_pat_path = std::path::Path::new(&format!("{}/conf/directory/admin-pat.txt", crate::core::shared::utils::get_stack_path())); + let stack = crate::core::shared::utils::get_stack_path(); + let legacy_pat_path = std::path::PathBuf::from(format!("{}/conf/directory/admin-pat.txt", stack)); if legacy_pat_path.exists() { let pat_token = std::fs::read_to_string(legacy_pat_path) .map_err(|e| anyhow::anyhow!("Failed to read PAT file: {e}"))? diff --git a/src/directory/bootstrap.rs b/src/directory/bootstrap.rs index 3fb6bae9..0cbd1586 100644 --- a/src/directory/bootstrap.rs +++ b/src/directory/bootstrap.rs @@ -300,8 +300,9 @@ fn save_setup_credentials(result: &BootstrapResult) { fn save_admin_pat_token(pat_token: &str) { // Create directory if it doesn't exist - let pat_dir = std::path::Path::new(&format!("{}/conf/directory", get_stack_path())); - if let Err(e) = fs::create_dir_all(pat_dir) { + let stack = get_stack_path(); + let pat_dir = std::path::PathBuf::from(format!("{}/conf/directory", stack)); + if let Err(e) = fs::create_dir_all(&pat_dir) { error!("Failed to create PAT directory: {}", e); return; } diff --git a/src/main.rs b/src/main.rs index 9b4c2d13..ad5f7d33 100644 --- a/src/main.rs +++ b/src/main.rs @@ -206,7 +206,8 @@ async fn main() -> std::io::Result<()> { dotenvy::dotenv().ok(); let env_path_early = std::path::Path::new("./.env"); - let vault_init_path_early = std::path::Path::new(&format!("{}/conf/vault/init.json", crate::core::shared::utils::get_stack_path())); + let stack = crate::core::shared::utils::get_stack_path(); + let vault_init_path_early = std::path::PathBuf::from(format!("{}/conf/vault/init.json", stack)); let vault_addr = std::env::var("VAULT_ADDR").unwrap_or_default(); let is_remote_vault = !vault_addr.is_empty() && !vault_addr.contains("localhost")