diff --git a/src/utils.cc b/src/utils.cc index d1925920..ae60857f 100644 --- a/src/utils.cc +++ b/src/utils.cc @@ -120,10 +120,25 @@ auto pretty_evaluate_callback( std::cerr << "\"\n"; } +static auto fallback_resolver(std::string_view identifier) + -> std::future> { + auto official_result{ + sourcemeta::jsontoolkit::official_resolver(identifier).get()}; + if (official_result.has_value()) { + std::promise> promise; + promise.set_value(std::move(official_result)); + return promise.get_future(); + } + + std::promise> promise; + promise.set_value(std::nullopt); + return promise.get_future(); +} + auto resolver(const std::map> &options) -> sourcemeta::jsontoolkit::SchemaResolver { sourcemeta::jsontoolkit::MapSchemaResolver dynamic_resolver{ - sourcemeta::jsontoolkit::official_resolver}; + fallback_resolver}; if (options.contains("resolve")) { for (const auto &schema_path : options.at("resolve")) {