#include <stdio.h>
#include <string.h>
#include <err.h>
#include <libgen.h>

#include "cli.h"

int main(int argc, char **argv)
{
	int cmdID = -1;
	char * command;
	int i , useSymlink = 0;
	struct backend_conn  *conn;

	command = basename(argv[0]);
	for(i = 0; i < MAX_COMMANDS; ++i) {
		if (strncmp(command, commandNames[i], strlen(commandNames[i])) == 0)
		{
			cmdID = i;
			useSymlink = 1;
		}
	}

	if(cmdID == -1) {
		command = argv[1];
		for(i = 0; i < MAX_COMMANDS; ++i) {
			if (strncmp(command, commandNames[i], strlen(commandNames[i])) == 0)
			{
				cmdID = i;
			}	
		}
	}

	if(cmdID == -1){
		printf("Could not match input with a command. Please try again...\n");
		return -1;
	}

	printf("Parsed Command : %s\n", commandNames[cmdID]);
	conn = ucart_backendConnect();
	if(conn == NULL) {
		return -1;
	}

	if(useSymlink) {
		(*cli_functions[cmdID]) (conn, argc, &argv[0]);
	}else {
		(*cli_functions[cmdID]) (conn, argc-1, &argv[1]);
	}

	ucart_backendDisconnect(conn);
    return 0;
}