Wildmeshing Toolkit
Loading...
Searching...
No Matches
DriverPrologue.hpp
1#pragma once
2
3#include <wmtk/utils/Logger.hpp>
4#include <wmtk/utils/resolve_path.hpp>
5
6#include <jse/jse.h>
7#include <spdlog/common.h>
8#include <nlohmann/json.hpp>
9
10#include <filesystem>
11#include <string>
12#include <vector>
13
14namespace wmtk::utils {
15
28inline std::filesystem::path verify_and_setup_logger(
29 nlohmann::json& json_params,
30 const nlohmann::json& spec,
31 const bool strict = false)
32{
33 {
34 jse::JSE spec_engine;
35 spec_engine.strict = strict;
36 if (!spec_engine.verify_json(json_params, spec)) {
37 log_and_throw_error(spec_engine.log2str());
38 }
39 json_params = spec_engine.inject_defaults(json_params, spec);
40 }
41
42 const std::filesystem::path root = json_params["input_dir"];
43
44 {
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);
50 }
51 }
52
53 return root;
54}
55
57inline std::vector<std::string> resolve_input_paths(
58 const nlohmann::json& json_params,
59 const std::filesystem::path& root)
60{
61 std::vector<std::string> input_paths = json_params["input"];
62 for (std::string& p : input_paths) {
63 p = resolve_path(root, p).string();
64 }
65 return input_paths;
66}
67
68} // namespace wmtk::utils