Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Overwrite config.json with player configuration #138

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions data
33 changes: 33 additions & 0 deletions python/utilities/overwrite_config_defaults.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Preserve changes to config by overwriting config.json with config.bak

import json


def recursive_overwrite(config_json, config_bak):
if isinstance(config_bak, dict) or isinstance(config_bak, list):
for key in config_bak:
# The check is repeated because if we pass a leaf to recursive_overwrite
# it is passed by value
if isinstance(config_bak[key], dict) or isinstance(config_bak[key], list):
recursive_overwrite(config_json[key], config_bak[key])
else:
config_json[key] = config_bak[key]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

might be able to use a Python dict merge here:

dict_a = {}
dict_b = {}
a.update(b)




if __name__ == "__main__":
config_bak = {}
config_json = {}

with open('config.bak') as file:
config_bak = json.load(file)

with open('config.json') as file:
config_json = json.load(file)

recursive_overwrite(config_json, config_bak)

with open('config.json', 'w') as json_file:
json.dump(config_json, json_file, ensure_ascii=False, indent=4)

print("Successfully overwrote config.json with your settings.")
29 changes: 29 additions & 0 deletions python/utilities/overwrite_config_defaults.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
General
-------
We are currently in the process of migrating vegastrike.config (old, XML) to config.json (new, JSON).
As a result, the structure of the new file changes regularly and overwrites whatever changes the player has introduced.
As the first thing we ported was the graphics (resolution, monitor),
this requires the player to manually edit the file after every relevant pull.

Solution
--------
There is a script, conveniently named overwrite_config_defaults, to do this automatically.
Copy all your changes to config.bak, preserving the relevant structure.

Example:
If this is your current config.json
"a": {
"b": "modified value",
"c": "unmodified value"
}

Create config.bak with the following:
"a": {
"b": "modified value"
}

Place config.bak in the same folder as config.json (currently root of data).
Run the following from root
python3 python/utilities/overwrite_config_defaults

Your config.json should be updated with your changes.
Loading