1
0
Fork 0

Use semantic versioning for the --json-report format version

The report now looks like:

{
        "meta": {
                "type": "FlightGear JSON report",
                "format major version": 1,
                "format minor version": 0
        },

        ...

}

When making compatible changes to the format (e.g., adding members to
JSON objects), only the minor version number should be increased.
Increase the major version number when a change is backward-incompatible
(such as the removal, renaming or semantic change of a member). Of
course, incompatible changes (like this one) should only be considered
as a last recourse.
This commit is contained in:
Florent Rougon 2016-11-12 11:11:03 +01:00
parent fb10f76e59
commit a6f1c93a2b

View file

@ -2590,6 +2590,10 @@ void Options::showVersion() const
cout << "PLIB version: " << PLIB_VERSION << endl; cout << "PLIB version: " << PLIB_VERSION << endl;
} }
// Print a report using JSON syntax on the standard output, encoded in UTF-8.
//
// The report format is versioned, don't forget to update it when making
// changes (see below).
void Options::printJSONReport() const void Options::printJSONReport() const
{ {
cJSON *rootNode = cJSON_CreateObject(); cJSON *rootNode = cJSON_CreateObject();
@ -2597,7 +2601,14 @@ void Options::printJSONReport() const
cJSON *metaNode = cJSON_CreateObject(); cJSON *metaNode = cJSON_CreateObject();
cJSON_AddItemToObject(rootNode, "meta", metaNode); cJSON_AddItemToObject(rootNode, "meta", metaNode);
cJSON_AddStringToObject(metaNode, "type", "FlightGear JSON report"); cJSON_AddStringToObject(metaNode, "type", "FlightGear JSON report");
cJSON_AddNumberToObject(metaNode, "format version", 1); // When making compatible changes to the format (e.g., adding members to
// JSON objects), only the minor version number should be increased.
// Increase the major version number when a change is backward-incompatible
// (such as the removal, renaming or semantic change of a member). Of
// course, incompatible changes should only be considered as a last
// recourse.
cJSON_AddNumberToObject(metaNode, "format major version", 1);
cJSON_AddNumberToObject(metaNode, "format minor version", 0);
cJSON *generalNode = cJSON_CreateObject(); cJSON *generalNode = cJSON_CreateObject();
cJSON_AddItemToObject(rootNode, "general", generalNode); cJSON_AddItemToObject(rootNode, "general", generalNode);