bool deps_json_t::load_standalone(const json_value& json, const pal::string_t& target_name) { if (!process_targets(json, target_name, &m_assets)) { return false; } auto package_exists = [&](const pal::string_t& package) -> bool { return m_assets.libs.count(package); }; auto get_relpaths = [&](const pal::string_t& package, int type_index, bool* rid_specific) -> const std::vector<pal::string_t>& { *rid_specific = false; return m_assets.libs[package].by_type[type_index].vec; }; reconcile_libraries_with_targets(json, package_exists, get_relpaths); const auto& json_object = json.as_object(); const auto iter = json_object.find(_X("runtimes")); if (iter != json_object.end()) { for (const auto& rid : iter->second.as_object()) { auto& vec = m_rid_fallback_graph[rid.first]; for (const auto& fallback : rid.second.as_array()) { vec.push_back(fallback.as_string()); } } } if (trace::is_enabled()) { trace::verbose(_X("The rid fallback graph is: {")); for (const auto& rid : m_rid_fallback_graph) { trace::verbose(_X("%s => ["), rid.first.c_str()); for (const auto& fallback : rid.second) { trace::verbose(_X("%s, "), fallback.c_str()); } trace::verbose(_X("]")); } trace::verbose(_X("}")); } return true; }
bool runtime_config_t::parse_opts(const json_value& opts) { if (opts.is_null()) { return true; } const auto& opts_obj = opts.as_object(); auto properties = opts_obj.find(_X("configProperties")); if (properties != opts_obj.end()) { const auto& prop_obj = properties->second.as_object(); for (const auto& property : prop_obj) { m_properties[property.first] = property.second.is_string() ? property.second.as_string() : property.second.to_string(); } } auto framework = opts_obj.find(_X("framework")); if (framework == opts_obj.end()) { return true; } m_portable = true; const auto& fx_obj = framework->second.as_object(); m_fx_name = fx_obj.at(_X("name")).as_string(); m_fx_ver = fx_obj.at(_X("version")).as_string(); auto value = fx_obj.find(_X("rollForward")); if (value == fx_obj.end()) { return true; } m_fx_roll_fwd = value->second.as_bool(); return true; }