stenodojo

stenodojo
git clone git@git.zachrice.app:repos/stenodojo.git
Log | Files | Refs

settings.py (855B)


      1 """Settings management for the stenography practice app."""
      2 
      3 import json
      4 import os
      5 
      6 SETTINGS_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "settings.json")
      7 
      8 DEFAULTS = {
      9     "plover_config_path": os.path.expanduser("~/.config/plover/plover.cfg"),
     10     "words_per_session": 50,
     11 }
     12 
     13 
     14 def load():
     15     settings = dict(DEFAULTS)
     16     if os.path.exists(SETTINGS_PATH):
     17         try:
     18             with open(SETTINGS_PATH) as f:
     19                 stored = json.load(f)
     20             settings.update(stored)
     21         except (json.JSONDecodeError, OSError):
     22             pass
     23     return settings
     24 
     25 
     26 def save(settings):
     27     with open(SETTINGS_PATH, "w") as f:
     28         json.dump(settings, f, indent=2)
     29 
     30 
     31 def get(key, default=None):
     32     return load().get(key, default)
     33 
     34 
     35 def update(updates):
     36     settings = load()
     37     settings.update(updates)
     38     save(settings)