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
#[macro_export]
macro_rules! autoclap {
() => {
Command::new(format!(
"{}{}{}{}{}",
env!("CARGO_PKG_NAME"),
" ",
env!("CARGO_PKG_VERSION"),
" :: ",
format!(
"{}{}{}",
env!("CARGO_PKG_REPOSITORY"),
"/releases/tag/",
env!("CARGO_PKG_VERSION"),
)
))
.author(env!("CARGO_PKG_AUTHORS"))
.about(env!("CARGO_PKG_DESCRIPTION"))
.arg(
Arg::new("debug")
.long("debug")
.short('D')
.help("Print raw data used internally."),
)
};
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_autoclap_name_works_when_typical() {
use clap::{Arg, Command};
let app = autoclap!();
assert_eq!(
app.get_name(),
"autoclap 0.2.1 :: https://github.com/mihaigalos/autoclap/releases/tag/0.2.1"
);
}
#[test]
fn test_autoclap_description_works_when_typical() {
use clap::{Arg, Command};
let app = autoclap!();
assert_eq!(
app.get_about().unwrap(),
"๐ Auto-propagate Cargo.toml infos (name, version, author, repo) into app."
);
}
}