improve cli application help

This commit is contained in:
Carl Philipp Klemm 2023-07-21 15:08:02 +02:00
parent ff6b89b495
commit a84f1e0ebe

30
main.c
View file

@ -70,12 +70,28 @@ static channel_t char_to_channel(char ch)
} }
} }
void print_commands(void)
{
puts("Valid commands:");
puts("connect [CHANNEL]\t | connect a channels");
puts("disconnect [CHANNEL]\t | disconnect a channels");
puts("clear\t\t\t | disconnect all channels");
puts("connect_all\t\t | connect all channels");
puts("get\t\t\t | get the state of all channels");
puts("read [ADDRESS] [LENGTH]\t | read from the device eeprom at address");
puts("write [ADDRESS] [LENGTH] | write to the device eeprom at address");
}
static int process_commands(char** commands, size_t command_count, struct eismultiplexer* multiplexer, char* name) static int process_commands(char** commands, size_t command_count, struct eismultiplexer* multiplexer, char* name)
{ {
if(strcmp(commands[0], "clear") == 0) if(strcmp(commands[0], "clear") == 0)
{ {
eismultiplexer_disconnect_channel(multiplexer, CHANNEL_NONE); eismultiplexer_disconnect_channel(multiplexer, CHANNEL_NONE);
} }
else if(strcmp(commands[0], "help") == 0)
{
print_commands();
}
else if(strcmp(commands[0], "write") == 0) else if(strcmp(commands[0], "write") == 0)
{ {
if(command_count < 3) if(command_count < 3)
@ -147,7 +163,7 @@ static int process_commands(char** commands, size_t command_count, struct eismul
{ {
if(command_count != 2) if(command_count != 2)
{ {
printf("Usage %s %s [CHANNEL]\n", name, commands[0]); puts("A channel is required");
return 2; return 2;
} }
@ -174,6 +190,12 @@ static int process_commands(char** commands, size_t command_count, struct eismul
return 3; return 3;
} }
} }
else
{
printf("%s is not a valid command\n", commands[0]);
print_commands();
return 3;
}
} }
return 0; return 0;
} }
@ -215,6 +237,12 @@ int main(int argc, char* argv[])
struct config config = {}; struct config config = {};
argp_parse(&argp, argc, argv, 0, 0, &config); argp_parse(&argp, argc, argv, 0, 0, &config);
if(config.list_commands)
{
print_commands();
return 0;
}
if(config.command_count < 1 && !(config.interactive || config.pipe)) if(config.command_count < 1 && !(config.interactive || config.pipe))
{ {
printf("A command is required\n"); printf("A command is required\n");