You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.5 KiB
C++

#include "application.h"
#include "output_util.h"
#include <iostream>
#include <cstring>
#include <cctype>
constexpr static int MIN_ARGC = 2;
constexpr static int MAX_ARGC = 4;
static std::tuple<int, int, std::string> error(const char* msg)
{
std::cout << msg;
return {EXIT_FAILURE, 0, {}};
}
static std::tuple<int, int, std::string> parseInput(int argc, char **argv)
{
int splitting = -1;
std::string path;
switch (argc)
{
default:
return error(output::NO_ARG_MSG);
case MIN_ARGC:
// maybe --help
if (strcmp(argv[1], output::HELP_FLAG) == 0)
return error(output::HELP_MSG);
/* HERE PARSE FILEPATH INSTEAD */ return error(output::NO_ARG_MSG);
break;
case (MAX_ARGC - 1):
case MAX_ARGC:
// full stack
if (strcmp(argv[1], output::SPLITTING_FLAG) == 0)
{
if (std::isdigit(*argv[2]))
splitting = std::stoi(argv[2]);
if (splitting < 1)
return error(output::SPLITTING_MSG);
/* HERE PARSE FILEPATH INSTEAD */ return error(output::NO_ARG_MSG);
}
return error(output::NO_ARG_MSG);
break;
}
return {EXIT_SUCCESS, splitting, path};
}
int main(int argc, char **argv)
{
auto[ret_code, splitting, path] = parseInput(argc, argv);
if (ret_code) // Error code is EXIT_FAILURE
return ret_code;
Application app;
if (app.init(splitting, path))
{
app.run();
return EXIT_SUCCESS;
}
return EXIT_FAILURE;
}