66 lines
1.2 KiB
Python
Raw Normal View History

2018-11-01 10:10:35 +01:00
# -*- coding: utf-8 -*-
import json
2020-03-29 20:56:50 +02:00
import os
from spoc.flock import locked
2018-11-01 10:10:35 +01:00
from . import paths
2018-11-01 10:10:35 +01:00
2020-03-29 20:56:50 +02:00
data = {}
mtime = None
def load():
global data
global mtime
file_mtime = os.stat(paths.CONF_FILE).st_mtime
2020-03-29 20:56:50 +02:00
if mtime != file_mtime:
with open(paths.CONF_FILE, 'r') as f:
2020-03-29 20:56:50 +02:00
data = json.load(f)
mtime = file_mtime
def save():
global mtime
with open(paths.CONF_FILE, 'w') as f:
2020-03-29 20:56:50 +02:00
json.dump(data, f, sort_keys=True, indent=4)
mtime = os.stat(paths.CONF_FILE).st_mtime
2020-03-29 20:56:50 +02:00
@locked(paths.CONF_LOCK)
def get_apps():
load()
return data['apps']
@locked(paths.CONF_LOCK)
def get_host():
2020-03-29 20:56:50 +02:00
load()
return data['host']
2020-03-29 20:56:50 +02:00
@locked(paths.CONF_LOCK)
def register_app(app, definition):
2020-03-29 20:56:50 +02:00
load()
data['apps'][app] = definition
2020-03-29 20:56:50 +02:00
save()
@locked(paths.CONF_LOCK)
def unregister_app(app):
2020-03-29 20:56:50 +02:00
load()
try:
del data['apps'][app]
2020-03-29 20:56:50 +02:00
save()
except KeyError:
pass
@locked(paths.CONF_LOCK)
def set_host(key, value):
2020-03-29 20:56:50 +02:00
load()
data['host'][key] = value
2020-03-29 20:56:50 +02:00
save()
@locked(paths.CONF_LOCK)
def set_app(app, key, value):
2020-03-29 20:56:50 +02:00
load()
try:
data['apps'][app][key] = value
save()
except KeyError:
pass