18 std::string_view cmdName,
23 using C =
typename Traits::ClassType;
24 using ArgTup =
typename Traits::ArgTuple;
26 std::vector<OptionDesc> opts(
27 OptsVec::value.begin(),
31 auto handler = [unitName, cmdName, desc](
const struct shell* sh,
int argc,
char** argv) ->
int
33 std::vector<std::string_view> argvec;
34 for (
int i = 1; i < argc; ++i)
36 argvec.push_back(argv[i]);
41 shell_error(sh,
"Missing or invalid options, try prts help [unit] [cmd]");
47 shell_error(sh,
"Unit '%s' not found", unitName.data());
50 C* u =
static_cast<C*
>(*uopt);
52 [u]<
typename... T>(T&&... a)
54 return (u->*MemFn)(std::forward<T>(a)...);
63 .options = std::move(opts),