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;
}