45 lines
823 B
C++
45 lines
823 B
C++
#include "processor/proc_argparser.h"
|
|
#include "aliases.h"
|
|
#include <argp.h>
|
|
|
|
INTERNAL error_t argp_parser(i32 key, char *arg, argp_state *state);
|
|
|
|
INTERNAL argp parser = {};
|
|
|
|
ProcessorArgs parse_args(i32 argc, char *argv[]) {
|
|
ProcessorArgs args = {};
|
|
|
|
parser.options = {};
|
|
parser.parser = argp_parser;
|
|
parser.args_doc = "JSON_FILEPATH";
|
|
|
|
argp_parse(&parser, argc, argv, 0, 0, &args);
|
|
|
|
return args;
|
|
}
|
|
|
|
error_t argp_parser(i32 key, char *arg, argp_state *state) {
|
|
ProcessorArgs *args = (ProcessorArgs *)state->input;
|
|
|
|
switch (key) {
|
|
case ARGP_KEY_ARG:
|
|
if (state->arg_num >= 1) {
|
|
argp_usage(state);
|
|
}
|
|
|
|
args->filepath = arg;
|
|
|
|
break;
|
|
case ARGP_KEY_END:
|
|
if (state->arg_num < 1) {
|
|
argp_usage(state);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
return ARGP_ERR_UNKNOWN;
|
|
}
|
|
|
|
return 0;
|
|
}
|