3#include <wmtk/utils/Logger.hpp>
4#include <wmtk/utils/resolve_path.hpp>
7#include <spdlog/common.h>
8#include <nlohmann/json.hpp>
14namespace wmtk::utils {
28inline std::filesystem::path verify_and_setup_logger(
29 nlohmann::json& json_params,
30 const nlohmann::json& spec,
31 const bool strict =
false)
35 spec_engine.strict = strict;
36 if (!spec_engine.verify_json(json_params, spec)) {
37 log_and_throw_error(spec_engine.log2str());
39 json_params = spec_engine.inject_defaults(json_params, spec);
42 const std::filesystem::path root = json_params[
"input_dir"];
45 std::string log_file_name = json_params[
"log_file"];
46 if (!log_file_name.empty()) {
47 log_file_name = resolve_path(root, log_file_name).string();
48 wmtk::set_file_logger(log_file_name);
49 logger().flush_on(spdlog::level::info);
57inline std::vector<std::string> resolve_input_paths(
58 const nlohmann::json& json_params,
59 const std::filesystem::path& root)
61 std::vector<std::string> input_paths = json_params[
"input"];
62 for (std::string& p : input_paths) {
63 p = resolve_path(root, p).string();