50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
|
import os
|
||
|
import json
|
||
|
|
||
|
|
||
|
class Singleton(type):
|
||
|
_instances = {}
|
||
|
def __call__(cls, *args, **kwargs):
|
||
|
if cls not in cls._instances:
|
||
|
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
|
||
|
return cls._instances[cls]
|
||
|
|
||
|
|
||
|
class Scheduler(metaclass=Singleton):
|
||
|
def __init__(self):
|
||
|
self._data = dict()
|
||
|
# who are we?
|
||
|
uid = os.getuid()
|
||
|
if uid == 0:
|
||
|
self._data_file = "/var/lib/backive/data.json"
|
||
|
else:
|
||
|
self._data_file = os.path.join(
|
||
|
os.path.expanduser("~"),
|
||
|
".config",
|
||
|
"backive",
|
||
|
"data.json"
|
||
|
)
|
||
|
if not os.path.exists(os.path.dirname(self._data_file)):
|
||
|
os.makedirs(os.path.dirname(self._data_file))
|
||
|
self.save()
|
||
|
|
||
|
def save(self):
|
||
|
with open(self._data_file, "w") as stream:
|
||
|
json.dump(self._data, stream, indent=2)
|
||
|
|
||
|
def load(self):
|
||
|
with open(self._data_file, "r") as stream:
|
||
|
self._data = json.load(stream)
|
||
|
|
||
|
def register_backup(self, name, frequency):
|
||
|
pass
|
||
|
|
||
|
def register_run(self, name):
|
||
|
pass
|
||
|
|
||
|
def should_run(self, name):
|
||
|
pass
|
||
|
|
||
|
def get_overtimed(self):
|
||
|
return list()
|