this is my first question here and I hope I get it right and don't come across as overly stupid immediately.
I am currently working on an existing CLI tool which I hope to convert into a more generic version of what it currently is. This is mostly so I learn the ropes with Rust.
I was scouring the documentation for
clap (I'm using
3.0.0-beta.2 as per the README) and wasn't able to find what I am looking for.
clap subcommands by default seem to behave similar to how
git <subcommand> works and I think I even saw that example mentioned. I would like for that to work as well. However, if the binary exists under a basename that corresponds to a subcommand, I'd like it to behave as if I had invoked
basename subcommand, where
basename is the name of the binary (minus
.exe file extension on Windows). On unixoid systems that could be in the form of a hardlink or a symlink and on Windows it could be a hardlink.
In essence I'd like it to behave similar to how Busybox behaves. I found and briefly looked at Rustybox but that appears to be mostly an automatically translated version of the C version of Busybox, which doesn't help me figure out how to do it in Rust, though.
I am aware that under Linux conventionally I'd be able to look at
/proc/self/exe and in Win32 I could use
GetModuleFileName to read the path to the binary that started the process. Is there a more cross-platform way to do that in Rust itself, or is this an example of having to implement this for each individual platform within a crate?
Thanks in advance for any insights you can offer.