https://github.com/QuiltMC/rfcs/blob/master/specification/0002-quilt.mod.json.md
| 264 | |
| 265 | // https://github.com/QuiltMC/rfcs/blob/master/specification/0002-quilt.mod.json.md |
| 266 | std::shared_ptr<ModDetails> ReadQuiltModInfo(QByteArray contents) |
| 267 | { |
| 268 | QJsonParseError jsonError; |
| 269 | QJsonDocument jsonDoc = QJsonDocument::fromJson(contents, &jsonError); |
| 270 | auto object = jsonDoc.object(); |
| 271 | |
| 272 | std::shared_ptr<ModDetails> details = std::make_shared<ModDetails>(); |
| 273 | |
| 274 | if (object.contains("schema_version") && object.value("schema_version").toInt() == 1) |
| 275 | { |
| 276 | QJsonObject loader = object.value("quilt_loader").toObject(); |
| 277 | details->mod_id = loader.value("id").toString(); |
| 278 | details->version = loader.value("version").toString(); |
| 279 | |
| 280 | if (loader.contains("metadata")) |
| 281 | { |
| 282 | QJsonObject metadata = loader.value("metadata").toObject(); |
| 283 | details->name = metadata.contains("name") ? metadata.value("name").toString() : details->mod_id; |
| 284 | |
| 285 | if (metadata.contains("description")) |
| 286 | { |
| 287 | details->description = metadata.value("description").toString(); |
| 288 | } |
| 289 | |
| 290 | if (metadata.contains("contributors")) |
| 291 | { |
| 292 | // NOTE: This lists every contributor, not just "authors" |
| 293 | details->authors = metadata.value("contributors").toObject().keys(); |
| 294 | } |
| 295 | |
| 296 | if (object.contains("contact")) |
| 297 | { |
| 298 | QJsonObject contact = object.value("contact").toObject(); |
| 299 | |
| 300 | if (contact.contains("homepage")) |
| 301 | { |
| 302 | details->homeurl = contact.value("homepage").toString(); |
| 303 | } |
| 304 | } |
| 305 | } |
| 306 | } |
| 307 | return details; |
| 308 | } |
| 309 | |
| 310 | std::shared_ptr<ModDetails> ReadForgeInfo(QByteArray contents) |
| 311 | { |
no test coverage detected