#input-output #clap #flags #cli #command #stdout #stdin

clap-io

为 clap 命令添加输入和输出标志

1 个不稳定版本

0.1.0 2023年1月12日

#64 in #input-output

Download history 23/week @ 2024-03-11 8/week @ 2024-03-18 32/week @ 2024-03-25 38/week @ 2024-04-01 5/week @ 2024-04-08 9/week @ 2024-04-22 63/week @ 2024-04-29 73/week @ 2024-05-06 17/week @ 2024-05-13 19/week @ 2024-05-20 56/week @ 2024-05-27 38/week @ 2024-06-03 100/week @ 2024-06-10 61/week @ 2024-06-17 34/week @ 2024-06-24

234 每月下载量

MIT 许可证

11KB
231 行代码(不包括注释)

clap-io

使用 clap 轻松为 CLIs 添加 --input--output 标志

示例

cargo run --example copy -- --help

许可证

版权所有 © 2023 Swift Navigation

MIT 开源许可证 下分发。


lib.rs:

为 clap 命令添加可选的 --input--output 标志。如果未指定 --input,则默认为(锁定)stdin。如果未指定 --output,则默认为(锁定)stdout。

示例

添加获取 --input--output 标志到您的程序中

use clap::Parser;
use clap_io::InputOutput;

#[derive(Parser)]
struct Cli {
    #[clap(flatten)]
    io: InputOutput,
}

let cli = Cli::parse();
let mut input = cli.io.input.open().unwrap();
let mut output = cli.io.output.open().unwrap();
std::io::copy(&mut input, &mut output).unwrap();

只添加一个

use clap::Parser;
use clap_io::Input;

#[derive(Parser)]
struct Cli {
   #[clap(long = "in")]
    input: Input,
}

let cli = Cli::parse();
eprintln!("is tty? {}", cli.input.is_tty());
eprintln!("path? {:?}", cli.input.path());

依赖

~1.2–2MB
~36K SLoC