1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use clap::{value_parser, Arg, Command};

pub fn build_cli() -> Command {
    Command::new("tcp-wrapper")
        .about("A TCP stream wrapper with cryptography")
        .subcommand(
            Command::new("server")
                .alias("s")
                .arg(Arg::new("address").help("Target address").required(true))
                .arg(
                    Arg::new("port")
                        .help("Port to listen on")
                        .value_parser(value_parser!(u16))
                        .required(true),
                ),
        )
        .subcommand(
            Command::new("client")
                .alias("c")
                .arg(Arg::new("server").help("Server address").required(true))
                .arg(
                    Arg::new("port")
                        .help("Local mapped port to listen on")
                        .value_parser(value_parser!(u16))
                        .required(true),
                ),
        )
        .subcommand_required(true)
}