#[macro_export]
macro_rules! arg {
(-$short_arg:tt: $desc:expr) => {
println!("-{}:\n {}", stringify!($short_arg), $desc)
};
(--$long_arg:tt: $desc:expr) => {
println!("--{}:\n {}", stringify!($long_arg).replace('_', "-"), $desc)
};
(-$short_arg:tt, --$long_arg:tt: $desc:expr) => {
println!("-{}, --{}:\n {}", stringify!($short_arg), stringify!($long_arg).replace('_', "-"), $desc)
};
(-$short_arg:tt <$val:tt>: $desc:expr) => {
println!("-{} <{}>:\n {}", stringify!($short_arg), stringify!($val), $desc)
};
(--$long_arg:tt <$val:tt>: $desc:expr) => {
println!("--{} <{}>:\n {}", stringify!($long_arg).replace('_', "-"), stringify!($val), $desc)
};
(-$short_arg:tt, --$long_arg:tt <$val:tt>: $desc:expr) => {
println!("-{}, --{} <{}>:\n {}", stringify!($short_arg), stringify!($long_arg).replace('_', "-"), stringify!($val), $desc)
};
(-$short_arg:tt [$( $opt_val:tt )|*]: $desc:expr) => {
print!("-{} [", stringify!($short_arg));
$(
print!("{}|", stringify!($opt_val));
)*
print!("{}", 08 as char); println!("]:\n {}", $desc)
};
(--$long_arg:tt [$( $opt_val:tt )|*]: $desc:expr) => {
print!("--{} [", stringify!($long_arg).replace('_', "-"));
$(
print!("{}|", stringify!($opt_val));
)*
print!("{}", 08 as char); println!("]:\n {}", $desc)
};
(-$short_arg:tt, --$long_arg:tt [$( $opt_val:tt )|*]: $desc:expr) => {
print!("-{}, --{} [", stringify!($short_arg).replace('_', "-"), stringify!($long_arg).replace('_', "-"));
$(
print!("{}|", stringify!($opt_val));
)*
print!("{}", 08 as char); println!("]:\n {}", $desc)
};
}