I'm working on a crate that has a context buffer that will very likely be configured from the command line. I want to provide an opt-in convenience implementation that clap users can add to their application.
Taken to it's almost extreme simplification, I want to create some entity that defines --name NAME
as an argument and allow it to be added to their clap arg parser. I first started doing this using a pure derive solution, but the crux is that a name is required, and the application must provide a default:
pub fn crate_default_registration_args(name: &str) -> Something {
let arg = Arg::something()
.short('n')
.long("name")
.default_value(name);
// .. create other args, add them all to "something"
something
}
I would like application developers to be able to call crate_default_registration_args("mydefault")
and stuff whatever it returns into a command or (more likely) a subcommand -- and have it work both using a Builder and derive.
Is this possible? (I realize the derive variant would require some hoops if it is at all possible).
clap can be kind of overwhelming -- I get the feeling that what I want to do is possible, but after reading what I believe are the relevant parts of the docs, I am not entirely sure.