66 lines
2.2 KiB
Rust
66 lines
2.2 KiB
Rust
//! 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<dyn std::error::Error>> {
|
|
// 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(())
|
|
} |