13 个版本 (6 个重大更改)

新功能 0.7.3 2024 年 8 月 22 日
0.6.1 2024 年 7 月 26 日
0.6.0 2024 年 1 月 5 日
0.4.0 2023 年 12 月 29 日

命令行工具 中排名第 1750

Download history 3/week @ 2024-05-10 16/week @ 2024-05-17 20/week @ 2024-05-24 20/week @ 2024-05-31 21/week @ 2024-06-07 30/week @ 2024-06-14 30/week @ 2024-06-21 6/week @ 2024-06-28 21/week @ 2024-07-05 18/week @ 2024-07-12 8/week @ 2024-07-19 210/week @ 2024-07-26 239/week @ 2024-08-02 35/week @ 2024-08-09 237/week @ 2024-08-16

每月下载量 723
2 crates 中使用

MIT 许可协议

46KB
473

关于

sprint 包提供表示库或 CLI 代码中的 shell 会话的 Shell 结构体,可用于运行命令

Shell 暴露其属性,您可以使用它们轻松地 创建自定义 shell修改现有的 shell 以满足您的要求。


sprint 包还提供了用于从命令行直接使用库的 CLI,有两种模式:

CLI 示例

$ 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: "$ "]
      --color <COLOR>  Force enable/disable terminal colors [default: auto]
                       [possible values: auto, always, never]
  -h, --help           Print help
  -V, --version        Print version

运行作为参数提供的命令

$ sprint ls
```text
$ ls
Cargo.lock
Cargo.toml
CHANGELOG.md
Makefile.md
README.md
src
t
target
tests
```

以交互方式运行

库示例

运行命令并显示输出

use sprint::*;

let shell = Shell::default();

shell.run(&[Command::new("ls"), Command::new("ls -l")]);

// or equivalently:
//shell.run_str(&["ls", "ls -l"]);

运行命令并返回输出

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
\
    "))),
);

自定义

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")]);

修改

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.md仓库 中。

依赖项

~4–13MB
~176K SLoC