feat: Migrate SAL to Cargo workspace
Some checks failed
Rhai Tests / Run Rhai Tests (push) Has been cancelled
Rhai Tests / Run Rhai Tests (pull_request) Has been cancelled

- Migrate individual modules to independent crates
- Refactor dependencies for improved modularity
- Update build system and testing infrastructure
- Update documentation to reflect new structure
This commit is contained in:
Mahmoud-Emad
2025-06-24 12:39:18 +03:00
parent 8012a66250
commit e125bb6511
54 changed files with 1196 additions and 1582 deletions

View File

@@ -9,23 +9,19 @@ license = "Apache-2.0"
[dependencies]
# Core dependencies for process management
tempfile = "3.5"
rhai = { version = "1.12.0", features = ["sync"] }
anyhow = "1.0.98"
tempfile = { workspace = true }
rhai = { workspace = true }
anyhow = { workspace = true }
# SAL dependencies
sal-text = { path = "../text" }
# Optional features for specific OS functionality
[target.'cfg(unix)'.dependencies]
nix = "0.30.1"
nix = { workspace = true }
[target.'cfg(windows)'.dependencies]
windows = { version = "0.61.1", features = [
"Win32_Foundation",
"Win32_System_Threading",
"Win32_Storage_FileSystem",
] }
windows = { workspace = true }
[dev-dependencies]
tempfile = "3.5"
tempfile = { workspace = true }

View File

@@ -1,22 +1,22 @@
//! # SAL Process Package
//!
//!
//! The `sal-process` package provides functionality for managing and interacting with
//! system processes across different platforms. It includes capabilities for:
//!
//!
//! - Running commands and scripts
//! - Listing and filtering processes
//! - Killing processes
//! - Checking for command existence
//! - Screen session management
//!
//!
//! This package is designed to work consistently across Windows, macOS, and Linux.
mod run;
mod mgmt;
mod run;
mod screen;
pub mod rhai;
pub use run::*;
pub use mgmt::*;
pub use screen::{new as new_screen, kill as kill_screen};
pub use run::*;
pub use screen::{kill as kill_screen, new as new_screen};

View File

@@ -24,7 +24,10 @@ pub fn new(name: &str, cmd: &str) -> Result<()> {
script_content.push_str(cmd);
fs::write(&script_path, script_content)?;
fs::set_permissions(&script_path, std::os::unix::fs::PermissionsExt::from_mode(0o755))?;
fs::set_permissions(
&script_path,
std::os::unix::fs::PermissionsExt::from_mode(0o755),
)?;
let screen_cmd = format!("screen -d -m -S {} {}", name, script_path);
run_command(&screen_cmd)?;