@ngld :
I think I found something, and I don't know how to understand it :
"FSOI#FreeSpace Port.Command Briefing Animations.1024x768 Command Briefing Animations": {
"files": [
[
[
"http://fsport.freespacemods.net/releases/"
],
{
"tango_hi4_fs1.zip": {
"dest": "fsport",
"is_archive": true
},
"tango_hi5_fs1.zip": {
"dest": "fsport",
"is_archive": true
},
"tango_hi2_fs1.zip": {
"dest": "fsport",
"is_archive": true
},
"tango_hi3_fs1.zip": {
"dest": "fsport",
"is_archive": true
},
"tango_hi1_fs1.zip": {
"dest": "fsport",
"is_archive": true
}
}
]
],
"description": "",
"dependencies": [],
"logo": null,
"submods": [],
"requirements": [],
"title": "1024x768 Command Briefing Animations",
"notes": "",
"source": "#FSOI",
"version": "Version 1.2",
"delete": []
}
This submod of "FSOI#FreeSpace Port.Command Briefing Animations.1024x768 Command Briefing Animations" doesn't list any dependencies, so how does fs2mod-py know that it has to install parents mods first ? Does it read the mod <ID> and use the points "." as separators to build the dependency tree ?
In the end (if the answer to the previous question is yes), what is the difference between setting the "dependencies" and "submods" values in parent/children mod objects, and mapping dependencies from mod IDs ? (I must be missing something because it looks a bit redundant to me)
Also, how do you plan to differentiate "user facing" submods (the ones that are presented directly to moddb users) like Silent Threat: Reborn and Cardinal Spear from "technical" submods like MV_Advanced ? I don't think Goober's installer text files provide this piece of data, but the new json format should provide it.
Here's something I dashed, for native mods, but I don't think it would play well enough with Goober's text files logic to be a solution :
(and with this syntax, a "package" cannot have dependencies like other "packages" in the same mod or a "package" inside another mod, this could be an issue.
This syntax would also help me to create a user friendly "mod builder" in Symfony.)
/* Repo configuration */
// Most of this is similar to Goober's text files (http://www.hard-light.net/wiki/index.php/FSO_Installer_Text_Files)
{
"<ID>": {
"title": "...",
"version": "...",
"description": "...",
"features": ["<FEATURE1>", "..."], //Technical details (added functionnality, models, ships) that don't fit in the description
"author": "...",
"tags": ["<TAG1>", "..."], //Tags allow to quickly search for a mod in the moddb
"logo": "<will be extracted from the archives if null>",
"notes": "...",
"submods": ["<ID1>", "..."],
"dependencies": ["<ID1>", "<ID2>", "..."],
"source": "<only when imported otherwise null>",
/* Packages would replace "technical" submods that should not appear on their own in the moddb.*/
"packages": [
{
"name": "...",
"notes": "...",
/*A package can be :
- "required" (always installed with the mod, in fact these are the base files of the mod),
- "recommended" (automatically selected for installation, but the user can skip them),
- "optional" (not automatically selected, but user can add them during the install process) */
"status": "<required|recommended|optional>",
"requirements": ["<req>"] //A package should be able to set different requirements that override the mod requirements (example : a high res/shader package that requires an experimental build
"files": [
[
[
"<link1>",
"..."
],
{
"<filename>": {
"is_archive": true,
"dest": "<destination path>"
}
}
]
]
}
],
"delete": ["<file1>", "..."]
"requirements": ["<req>"] // TODO
},
"#include": [
"<repo file 1>",
"..."
]
}
There is a more conservative version of this, and it may play better with the text files conversion :
(this version is more limited in terms of things we can recommend on install)
/* Repo configuration */
// Most of this is similar to Goober's text files (http://www.hard-light.net/wiki/index.php/FSO_Installer_Text_Files)
{
"<ID>": {
"type": "..." //Something like "MOD" for user facing mods, "ADVANCED" for technical packages, "BUILD" for fs2_open builds.
"title": "...",
"version": "...",
"description": "...",
"features": ["<FEATURE1>", "..."], //Technical details (added functionnality, models, ships) that don't fit in the description
"author": "...",
"tags": ["<TAG1>", "..."], //Tags allow to quickly search for a mod in the moddb
"logo": "<will be extracted from the archives if null>",
"notes": "...",
"submods": ["<ID1>", "..."],
"dependencies": ["<ID1>", "<ID2>", "..."],
"source": "<only when imported otherwise null>",
"files": [
[
[
"<link1>",
"..."
],
{
"<filename>": {
"is_archive": true,
"dest": "<destination path>"
}
}
]
],
"delete": ["<file1>", "..."]
"requirements": ["<req>"] // TODO
},
"#include": [
"<repo file 1>",
"..."
]
}