8 releases (5 breaking)
0.6.0 | Jan 5, 2024 |
---|---|
0.5.0 | Jan 5, 2024 |
0.4.0 | Dec 29, 2023 |
0.3.0 | Dec 27, 2023 |
0.1.2 | Dec 24, 2023 |
#1722 in Command line utilities
134 downloads per month
Used in 2 crates
45KB
328 lines
About
The sprint
crate provides the Shell
struct which represents a shell
session in your library or CLI code and can be used for running commands:
Shell
exposes its properties so you can easily
create a custom shell or modify an existing shell with
the settings you want.
The sprint
crate also provides the sprint
CLI which provides an easy way to
use the library directly from the command line in two modes:
CLI examples
$ sprint -h
Command runner
Usage: sprint [OPTIONS] [STRING]...
Arguments:
[STRING]... File(s) or command(s)
Options:
-s <STRING> Shell [default: "sh -c"]
-f <STRING> Fence [default: ```]
-i <STRING> Info [default: text]
-p <STRING> Prompt [default: "$ "]
-h, --help Print help
-V, --version Print version
Run command(s) given as arguments
$ sprint 'ls'
```text
$ ls
Cargo.lock
Cargo.toml
CHANGELOG.md
Makefile.md
README.md
src
t
target
tests
```
Run interactively
Library examples
Run command(s) and show the output
use sprint::*;
let shell = Shell::default();
shell.run(&[Command::new("ls"), Command::new("ls -l")]);
// or equivalently:
//shell.run_str(&["ls", "ls -l"]);
Run command(s) and return the output
use sprint::*;
let shell = Shell::default();
let results = shell.run(&[Command {
command: String::from("ls"),
stdout: Pipe::string(),
codes: vec![0],
..Default::default()
}]);
assert_eq!(
results[0].stdout,
Pipe::String(Some(String::from("\
Cargo.lock
Cargo.toml
CHANGELOG.md
Makefile.md
README.md
src
t
target
tests
\
"))),
);
Customize
use sprint::*;
let shell = Shell {
shell: Some(String::from("sh -c")),
dry_run: false,
sync: true,
print: true,
fence: String::from("```"),
info: String::from("text"),
prompt: String::from("$ "),
fence_color: bunt::style!("#555555"),
info_color: bunt::style!("#555555"),
prompt_color: bunt::style!("#555555"),
command_color: bunt::style!("#00ffff+bold"),
error_color: bunt::style!("#ff0000+bold+italic"),
};
shell.run(&[Command::new("ls"), Command::new("ls -l")]);
Modify
use sprint::*;
let mut shell = Shell::default();
shell.shell = None;
shell.run(&[Command::new("ls"), Command::new("ls -l")]);
shell.sync = false;
shell.run(&[Command::new("ls"), Command::new("ls -l")]);
Changelog
- 0.1.0 (2023-12-22): Initial release
- 0.1.1 (2023-12-24): Fix readme
- 0.1.2 (2023-12-24): Fix readme
- 0.2.0 (2023-12-26): Redesign; update dependencies
- 0.3.0 (2023-12-27): Add error handling
- 0.4.0 (2023-12-29): Fix error handling
- 0.5.0 (2024-01-05): Add CLI; update dependencies
- 0.6.0 (2024-01-05): Fix script mode output
Dependencies
~4–16MB
~185K SLoC