-
Notifications
You must be signed in to change notification settings - Fork 1
/
cargo-http.rs
55 lines (53 loc) · 1.62 KB
/
cargo-http.rs
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
extern crate app;
use app::{App, Args, Opt};
#[derive(Debug, Default)]
struct Http {
keep_alive: bool,
port: Option<u16>,
paths: Vec<String>,
}
fn main() {
let mut http = Http::default();
http.paths.push("./".to_owned());
{
let mut app = App::new("http")
.version("0.5.0")
.desc("A Simple HTTP Server for Static File.")
.author("Wspsxing", "biluohc@qq.com")
.author("Xyz.org", "moz@mio.org")
.addr(
"GitHub",
"https://github.com/biluohc/app/blob/master/examples/http.rs",
)
.opt(
Opt::new("keep-alive", &mut http.keep_alive)
.short('k')
.long("keep-alive")
.help("open keep-alive"),
)
.opt(
Opt::new("port", &mut http.port)
.short('p')
.long("port")
.help("Sets listenning port"),
)
.args(Args::new("PATH", &mut http.paths).help("Sets the path to share"))
.build_helper();
app.as_mut_helps()
.cmd_usages
.get_mut(&None)
.map(|s| *s = "USAGE: \n http [options] [<PATH>...]\n http -p <port> [<PATH>...]\n http --port <port> [<PATH>...]".to_owned())
.unwrap();
if App::as_cargo_subcmd() {
app.fix_helps_for_cargo();
app.parse_args_for_cargo();
} else {
app.parse_args();
}
}
fun(&http);
}
fn fun(http: &Http) {
println!("Http: {:?}", http);
// do something
}