use scripty::*;
fn main() -> Result<()> {
println!("🚀 Basic scripty Usage");
println!("=====================\n");
println!("1. Simple command execution:");
simple_execution()?;
println!("\n2. Capturing command output:");
capture_output()?;
println!("\n3. Working with command arguments:");
command_arguments()?;
println!("\n4. Environment and directory:");
environment_and_directory()?;
println!("\n5. Error handling:");
error_handling();
println!("\n🎉 Basic examples completed!");
println!("🚀 Next step: Run 'cargo run --example 01_simple_pipes' for pipeline operations");
Ok(())
}
fn simple_execution() -> Result<()> {
println!(" Running a simple echo command");
cmd!("echo", "Hello from scripty!").run()?;
cmd!("echo").arg("Builder pattern example").run()?;
Ok(())
}
fn capture_output() -> Result<()> {
println!(" Capturing command output as string");
let output = cmd!("echo", "Captured output").output()?;
println!(" Captured: {:?}", output.trim());
let date = cmd!("date", "+%Y-%m-%d").output()?;
println!(" Current date: {}", date.trim());
let contents = cmd!("echo", "scripty is awesome").output()?;
if contents.contains("awesome") {
println!(" ✓ Found 'awesome' in output!");
}
Ok(())
}
fn command_arguments() -> Result<()> {
println!(" Building commands with multiple arguments");
cmd!("echo", "arg1", "arg2", "arg3").run()?;
let mut command = cmd!("echo");
for i in 1..=3 {
command = command.arg(format!("item{}", i));
}
command.run()?;
cmd!("echo")
.args(["multiple", "args", "at", "once"])
.run()?;
Ok(())
}
fn environment_and_directory() -> Result<()> {
println!(" Setting environment variables and working directory");
let output = cmd!("sh", "-c", "echo $MY_VAR")
.env("MY_VAR", "Hello from env!")
.output()?;
println!(" Environment variable: {}", output.trim());
cmd!("sh", "-c", "echo Name: $NAME, Version: $VERSION")
.env("NAME", "scripty")
.env("VERSION", "0.3.3")
.run()?;
let pwd = cmd!("pwd").current_dir("/tmp").output()?;
println!(" Working directory: {}", pwd.trim());
Ok(())
}
fn error_handling() {
println!(" Demonstrating error handling");
match cmd!("nonexistent-command").run() {
Ok(_) => println!(" Unexpected success!"),
Err(e) => println!(" ✓ Expected error: {}", e),
}
match cmd!("false").run() {
Ok(_) => println!(" Unexpected success!"),
Err(e) => println!(" ✓ Expected failure: {}", e),
}
match cmd!("sh", "-c", "echo 'Error!' >&2; exit 1").output() {
Ok(output) => println!(" ✓ Captured output despite exit 1: {:?}", output.trim()),
Err(e) => println!(" Error: {}", e),
}
}