//! Example of using the Git module with Rhai //! //! This example demonstrates how to use the Git module functions //! through the Rhai scripting language. use sal::rhai::{self, Engine}; fn main() -> Result<(), Box> { // Create a new Rhai engine let mut engine = Engine::new(); // Register SAL functions with the engine rhai::register(&mut engine)?; // Run a Rhai script that uses Git functions let script = r#" // Print a header print("=== Testing Git Module Functions ===\n"); // Test git_list function print("Listing git repositories..."); let repos = git_list(); print(`Found ${repos.len()} repositories`); // Print the first few repositories if repos.len() > 0 { print("First few repositories:"); let count = if repos.len() > 3 { 3 } else { repos.len() }; for i in range(0, count) { print(` - ${repos[i]}`); } } // Test find_matching_repos function if repos.len() > 0 { print("\nTesting repository search..."); // Extract a part of the first repo name to search for let repo_path = repos[0]; let parts = repo_path.split("/"); let repo_name = parts[parts.len() - 1]; print(`Searching for repositories containing "${repo_name}"`); let matching = find_matching_repos(repo_name); print(`Found ${matching.len()} matching repositories`); for repo in matching { print(` - ${repo}`); } // Check if a repository has changes print("\nChecking for changes in repository..."); let has_changes = git_has_changes(repo_path); print(`Repository ${repo_path} has changes: ${has_changes}`); } print("\n=== Git Module Test Complete ==="); "#; // Evaluate the script match engine.eval::<()>(script) { Ok(_) => println!("Script executed successfully"), Err(e) => eprintln!("Script execution error: {}", e), } Ok(()) }