From 4c8d764d171ec77ff626cec273c44ec7e7a995fc Mon Sep 17 00:00:00 2001 From: frosty Date: Wed, 16 Sep 2026 16:32:06 -0400 Subject: init: init --- src/Main.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/Main.c (limited to 'src/Main.c') diff --git a/src/Main.c b/src/Main.c new file mode 100644 index 0000000..b7c77f1 --- /dev/null +++ b/src/Main.c @@ -0,0 +1,52 @@ +#include "Cli/Cli.h" +#include "FileProcessor/FileProcessor.h" +#include "Logger/Logger.h" +#include "Path/Path.h" + +#include +#include +#include + +static int run(int argc, char **argv) { + CliOptions options; + CliParseResult parse_result; + char *automatic_output = NULL; + const char *output_path; + int result; + + parse_result = cli_parse(argc, argv, &options); + if (parse_result != CLI_PARSE_OK) { + return parse_result == CLI_PARSE_ERROR ? EXIT_FAILURE : EXIT_SUCCESS; + } + + logger_set_level(options.log_level); + + output_path = options.output_path; + if (output_path == NULL) { + automatic_output = path_make_default_output(options.input_path); + if (automatic_output == NULL) { + logger_error("unable to allocate output path"); + return EXIT_FAILURE; + } + output_path = automatic_output; + } + + if (options.input_type == INPUT_TYPE_DIRECTORY) { + result = process_directory(options.input_path, output_path, + options.overwrite_output); + } else { + result = process_file(options.input_path, output_path); + } + + free(automatic_output); + return result == 0 ? EXIT_SUCCESS : EXIT_FAILURE; +} + +int main(int argc, char **argv) { + int result; + + xmlInitParser(); + result = run(argc, argv); + xmlCleanupParser(); + return result; +} -- cgit v1.3