37 lines
1.1 KiB
Rust
37 lines
1.1 KiB
Rust
// Basic buildah operations for container management
|
|
use std::process::Command;
|
|
use crate::process::CommandResult;
|
|
use super::BuildahError;
|
|
|
|
|
|
/// Execute a buildah command and return the result
|
|
pub fn execute_buildah_command(args: &[&str]) -> Result<CommandResult, BuildahError> {
|
|
let output = Command::new("buildah")
|
|
.args(args)
|
|
.output();
|
|
|
|
match output {
|
|
Ok(output) => {
|
|
let stdout = String::from_utf8_lossy(&output.stdout).to_string();
|
|
let stderr = String::from_utf8_lossy(&output.stderr).to_string();
|
|
|
|
let result = CommandResult {
|
|
stdout,
|
|
stderr,
|
|
success: output.status.success(),
|
|
code: output.status.code().unwrap_or(-1),
|
|
};
|
|
|
|
if result.success {
|
|
Ok(result)
|
|
} else {
|
|
Err(BuildahError::CommandFailed(format!("Command failed with code {}: {}",
|
|
result.code, result.stderr.trim())))
|
|
}
|
|
},
|
|
Err(e) => {
|
|
Err(BuildahError::CommandExecutionFailed(e))
|
|
}
|
|
}
|
|
}
|