5 releases
0.1.4 | Jun 28, 2024 |
---|---|
0.1.3 | Jun 28, 2024 |
0.1.2 | Jun 28, 2024 |
0.1.1 | Jun 28, 2024 |
0.1.0 | Jun 28, 2024 |
#317 in Command-line interface
40 downloads per month
13KB
191 lines
command_runner
command_runner
is a cross-platform Rust crate designed for executing terminal commands interactively. It wraps various features in a struct to provide a seamless command execution experience.
Key Features
- Execute Command Line Instructions: Run any command line instruction from within your Rust application.
- Check Command Execution Status: Determine if a command executed successfully.
- Fetch Command Output: Retrieve the real-time output of the command, similar to what you would see in a terminal.
- Handle User Input: If a running command requires user input, the crate provides a way to input data easily while still capturing the command's output.
- Cross-Platform Compatibility: Works seamlessly across different platforms, including Linux, macOS, Windows, and mobile platforms like Android.
Installation
Add the following to your Cargo.toml
:
[dependencies]
command_runner = "*"
Usage Example
use anyhow::Result;
use command_runner::CommandRunner;
fn main() -> Result<()> {
let mut runner = CommandRunner::new("echo Hello, World!", 1024)?;
// Check if the command was executed successfully
if runner.get_status() == CommandStatus::Terminated {
println!("Command executed successfully!");
}
// Get the command output
while let Some(output) = runner.get_output() {
println!("Command output: {}", output);
}
// Handle user input
runner.execute("read -p 'Enter your name: ' name && echo \"Hello, $name\"")?;
runner.provide_input("John Doe\n")?;
// Get the final output
while let Some(final_output) = runner.get_output() {
println!("Final output: {}", final_output);
}
Ok(())
}
Documentation
For more detailed usage instructions and API documentation, please visit docs.rs.
Contribution
We welcome issues and pull requests. For major changes, please open an issue first to discuss what you would like to change.
License
This crate is dual-licensed under either:
- Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (http://opensource.org/licenses/MIT)
Choose the license that best fits your needs.
Dependencies
~3.5MB
~121K SLoC