#clap #command-line-arguments #input-output #standard #automatic #interface #file

clap-file

Provides types for clap's derive interface, enabling easy handling of input/output with automatically opened files or standard input/output based on command-line arguments

2 unstable releases

0.2.0 Sep 22, 2024
0.1.0 Sep 22, 2024

#397 in Command-line interface

MIT/Apache

23KB
321 lines

clap-file

Maintenance: passively-maintained License: MIT OR Apache-2.0 crates.io docs.rs Rust: ^1.74.0 GitHub Actions: CI Codecov

Provides types for clap’s derive interface, enabling easy handling of input/output with automatically opened files or standard input/output based on command-line arguments.

Usage

Run cargo add clap-file or add this to your Cargo.toml:

[dependencies]
clap-file = "0.2.0"

Examples

Example usage of Input ans Output types:

use std::io::{self, BufRead as _, Write as _};

use clap::Parser as _;
use clap_file::{Input, Output};

struct Args {
    /// Input file. If not provided, reads from standard input.
    input: Input,
    /// output file. If not provided, reads from standard output.
    output: Output,
}

fn main() -> io::Result<()> {
    let args = Args::parse();
    let input = args.input.lock();
    let mut output = args.output.lock();
    for line in input.lines() {
        let line = line?;
        writeln!(&mut output, "{line}")?;
    }
    Ok(())
}

Minimum supported Rust version (MSRV)

The minimum supported Rust version is Rust 1.74.0. At least the last 3 versions of stable Rust are supported at any given time.

While a crate is a pre-release status (0.x.x) it may have its MSRV bumped in a patch release. Once a crate has reached 1.x, any MSRV bump will be accompanied by a new minor version.

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

See CONTRIBUTING.md.

No runtime deps