71 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			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;
 | 
						|
}
 |