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
|
|
|
|
2019-02-14 21:10:08 +01:00
|
|
|
from .paths import CONF_FILE, CONF_LOCK
|
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(CONF_FILE).st_mtime
|
|
|
|
if mtime != file_mtime:
|
|
|
|
with open(CONF_FILE, 'r') as f:
|
|
|
|
data = json.load(f)
|
|
|
|
mtime = file_mtime
|
|
|
|
|
|
|
|
def save():
|
|
|
|
global mtime
|
|
|
|
with open(CONF_FILE, 'w') as f:
|
|
|
|
json.dump(data, f, sort_keys=True, indent=4)
|
|
|
|
mtime = os.stat(CONF_FILE).st_mtime
|
|
|
|
|
|
|
|
@locked(CONF_LOCK)
|
2020-03-29 22:50:42 +02:00
|
|
|
def get_apps():
|
|
|
|
load()
|
|
|
|
return data['apps']
|
|
|
|
|
|
|
|
@locked(CONF_LOCK)
|
|
|
|
def get_host():
|
2020-03-29 20:56:50 +02:00
|
|
|
load()
|
2020-03-29 22:50:42 +02:00
|
|
|
return data['host']
|
2020-03-29 20:56:50 +02:00
|
|
|
|
|
|
|
@locked(CONF_LOCK)
|
2020-03-29 22:50:42 +02:00
|
|
|
def register_app(name, definition):
|
2020-03-29 20:56:50 +02:00
|
|
|
load()
|
2020-03-29 22:50:42 +02:00
|
|
|
data['apps'][name] = definition
|
2020-03-29 20:56:50 +02:00
|
|
|
save()
|
|
|
|
|
|
|
|
@locked(CONF_LOCK)
|
2020-03-29 22:50:42 +02:00
|
|
|
def unregister_app(name):
|
2020-03-29 20:56:50 +02:00
|
|
|
load()
|
|
|
|
try:
|
2020-03-29 22:50:42 +02:00
|
|
|
del data['apps'][name]
|
2020-03-29 20:56:50 +02:00
|
|
|
save()
|
|
|
|
except KeyError:
|
|
|
|
pass
|
|
|
|
|
|
|
|
@locked(CONF_LOCK)
|
2020-04-03 10:57:05 +02:00
|
|
|
def set_host(key, value):
|
2020-03-29 20:56:50 +02:00
|
|
|
load()
|
2020-03-29 22:50:42 +02:00
|
|
|
data['host'][key] = value
|
2020-03-29 20:56:50 +02:00
|
|
|
save()
|
|
|
|
|
|
|
|
@locked(CONF_LOCK)
|
2020-04-03 10:57:05 +02:00
|
|
|
def set_app(name, key, value):
|
2020-03-29 20:56:50 +02:00
|
|
|
load()
|
2020-03-29 22:50:42 +02:00
|
|
|
data['apps'][name][key] = value
|
2020-03-29 20:56:50 +02:00
|
|
|
save()
|