- Reorganized examples into osiris/, sal/, and utils/ folders - Moved hardcoded scripts to separate .rhai files - Added signature() method to JobBuilder for job signing - Updated OSIRIS context to use block_in_place instead of runtime - Removed runtime field from OsirisContext - Added typed save() methods for Note and Event objects - Updated all examples to use new structure and APIs
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// 03_process_management.rhai
 | 
						|
// Demonstrates process management operations using SAL
 | 
						|
 | 
						|
// Check if common commands exist
 | 
						|
println("Checking if common commands exist:");
 | 
						|
let commands = ["ls", "echo", "cat", "grep"];
 | 
						|
for cmd in commands {
 | 
						|
    let exists = which(cmd);
 | 
						|
    println(`  - ${cmd}: ${exists}`);
 | 
						|
}
 | 
						|
 | 
						|
// Run a simple command
 | 
						|
println("\nRunning a simple echo command:");
 | 
						|
let echo_result = run_command("echo 'Hello from Rhai process management!'");
 | 
						|
println(`Command output: ${echo_result.stdout}`);
 | 
						|
// The CommandResult type doesn't have an exit_code property
 | 
						|
println(`Success: ${echo_result.success}`);
 | 
						|
 | 
						|
// Run a command silently (no output to console)
 | 
						|
println("\nRunning a command silently:");
 | 
						|
let silent_result = run_silent("ls -la");
 | 
						|
println(`Command success: ${silent_result.success}`);
 | 
						|
println(`Command output length: ${silent_result.stdout.len()} characters`);
 | 
						|
 | 
						|
// Create custom run options
 | 
						|
println("\nRunning a command with custom options:");
 | 
						|
let options = new_run_options();
 | 
						|
options["die"] = false;       // Don't return error if command fails
 | 
						|
options["silent"] = true;     // Suppress output to stdout/stderr
 | 
						|
options["async_exec"] = false; // Run synchronously
 | 
						|
options["log"] = true;        // Log command execution
 | 
						|
 | 
						|
let custom_result = run("echo 'Custom options test'", options);
 | 
						|
println(`Command success: ${custom_result.success}`);
 | 
						|
println(`Command output: ${custom_result.stdout}`);
 | 
						|
 | 
						|
// List processes
 | 
						|
println("\nListing processes (limited to 5):");
 | 
						|
let processes = process_list("");
 | 
						|
let count = 0;
 | 
						|
for proc in processes {
 | 
						|
    if count >= 5 {
 | 
						|
        break;
 | 
						|
    }
 | 
						|
    // Just print the PID since we're not sure what other properties are available
 | 
						|
    println(`  - PID: ${proc.pid}`);
 | 
						|
    count += 1;
 | 
						|
}
 | 
						|
println(`Total processes: ${processes.len()}`);
 | 
						|
 | 
						|
// Run a command that will create a background process
 | 
						|
// Note: This is just for demonstration, the process will be short-lived
 | 
						|
println("\nRunning a background process:");
 | 
						|
let bg_options = new_run_options();
 | 
						|
bg_options["async_exec"] = true;
 | 
						|
// Fix the command to avoid issues with shell interpretation
 | 
						|
let bg_result = run("sleep 1", bg_options);
 | 
						|
println("Background process started");
 | 
						|
 | 
						|
// Wait a moment to let the background process run
 | 
						|
run_command("sleep 0.5");
 | 
						|
println("Main script continuing while background process runs");
 | 
						|
 | 
						|
"Process management script completed successfully!" |