2022-05-23 15:50:11 +00:00
|
|
|
use std::path::PathBuf;
|
2021-10-11 19:51:33 +00:00
|
|
|
use std::process::exit;
|
2021-09-14 20:38:41 +00:00
|
|
|
|
2022-05-23 15:50:11 +00:00
|
|
|
use clap::{value_parser, Arg, Command};
|
2021-09-14 20:38:41 +00:00
|
|
|
|
2022-02-12 03:48:29 +00:00
|
|
|
fn applet_commands() -> [Command<'static>; 2] {
|
2021-11-17 20:20:52 +00:00
|
|
|
[
|
2022-02-12 03:48:29 +00:00
|
|
|
Command::new("true").about("does nothing successfully"),
|
|
|
|
Command::new("false").about("does nothing unsuccessfully"),
|
2021-11-17 20:20:52 +00:00
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2021-09-14 20:38:41 +00:00
|
|
|
fn main() {
|
2022-02-14 21:47:20 +00:00
|
|
|
let cmd = Command::new(env!("CARGO_CRATE_NAME"))
|
2022-02-10 17:51:40 +00:00
|
|
|
.multicall(true)
|
2021-11-17 20:20:52 +00:00
|
|
|
.subcommand(
|
2022-02-12 03:48:29 +00:00
|
|
|
Command::new("busybox")
|
2022-02-10 17:51:40 +00:00
|
|
|
.arg_required_else_help(true)
|
2021-11-17 20:20:52 +00:00
|
|
|
.subcommand_value_name("APPLET")
|
|
|
|
.subcommand_help_heading("APPLETS")
|
|
|
|
.arg(
|
|
|
|
Arg::new("install")
|
|
|
|
.long("install")
|
|
|
|
.help("Install hardlinks for all subcommands in path")
|
|
|
|
.exclusive(true)
|
|
|
|
.takes_value(true)
|
|
|
|
.default_missing_value("/usr/local/bin")
|
2022-05-23 15:50:11 +00:00
|
|
|
.value_parser(value_parser!(PathBuf))
|
2022-02-09 17:16:34 +00:00
|
|
|
.use_value_delimiter(false),
|
2021-11-17 20:20:52 +00:00
|
|
|
)
|
|
|
|
.subcommands(applet_commands()),
|
2021-09-14 20:38:41 +00:00
|
|
|
)
|
2021-11-17 20:20:52 +00:00
|
|
|
.subcommands(applet_commands());
|
2021-10-15 19:59:33 +00:00
|
|
|
|
2022-02-14 21:47:20 +00:00
|
|
|
let matches = cmd.get_matches();
|
2021-11-17 20:20:52 +00:00
|
|
|
let mut subcommand = matches.subcommand();
|
|
|
|
if let Some(("busybox", cmd)) = subcommand {
|
2022-06-06 17:35:00 +00:00
|
|
|
if cmd.is_present("install") {
|
2021-11-17 20:20:52 +00:00
|
|
|
unimplemented!("Make hardlinks to the executable here");
|
|
|
|
}
|
|
|
|
subcommand = cmd.subcommand();
|
2021-09-14 20:38:41 +00:00
|
|
|
}
|
2021-11-17 20:20:52 +00:00
|
|
|
match subcommand {
|
|
|
|
Some(("false", _)) => exit(1),
|
|
|
|
Some(("true", _)) => exit(0),
|
2021-11-12 15:12:32 +00:00
|
|
|
_ => unreachable!("parser should ensure only valid subcommand names are used"),
|
|
|
|
}
|
2021-09-14 20:38:41 +00:00
|
|
|
}
|