Add cache data
This commit is contained in:
parent
8dd844888f
commit
ad8a4ed906
1 changed files with 55 additions and 2 deletions
|
@ -7,13 +7,25 @@
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
import json
|
||||||
|
import time
|
||||||
import logging
|
import logging
|
||||||
from logging.handlers import SysLogHandler
|
from logging.handlers import SysLogHandler
|
||||||
import click
|
import click
|
||||||
import click_config_file
|
import click_config_file
|
||||||
|
|
||||||
|
|
||||||
|
HOME_FOLDER = os.environ.get('HOME', os.environ.get('USERPROFILE', '/'))
|
||||||
|
if HOME_FOLDER == '/':
|
||||||
|
CACHE_FOLDER = '/var/cache'
|
||||||
|
LOG_FOLDER = '/var/log/'
|
||||||
|
else:
|
||||||
|
CACHE_FOLDER = f"{HOME_FOLDER}/.local/"
|
||||||
|
LOG_FOLDER = f"{HOME_FOLDER}/log/"
|
||||||
|
|
||||||
|
|
||||||
class __project_codename_camel__:
|
class __project_codename_camel__:
|
||||||
|
"""__description__"""
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
self.config = kwargs
|
self.config = kwargs
|
||||||
|
@ -30,6 +42,35 @@ class __project_codename_camel__:
|
||||||
'__project_codename__.log'
|
'__project_codename__.log'
|
||||||
)
|
)
|
||||||
self._init_log()
|
self._init_log()
|
||||||
|
self._default_data = {
|
||||||
|
"last_update": 0,
|
||||||
|
}
|
||||||
|
self.data = self._read_cached_data()
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
'''Close class and save data'''
|
||||||
|
self._save_cached_data(self.data)
|
||||||
|
|
||||||
|
def _read_cached_data(self):
|
||||||
|
if os.path.exists(self.config['cache_file']):
|
||||||
|
with open(self.config['cache_file'], 'r', encoding='utf-8') as cache_file:
|
||||||
|
try:
|
||||||
|
cached_data = json.load(cache_file)
|
||||||
|
if (
|
||||||
|
'last_update' in cached_data and
|
||||||
|
cached_data['last_update'] + self.config['max_cache_age'] > time.time()
|
||||||
|
):
|
||||||
|
cached_data = self._default_data
|
||||||
|
except json.decoder.JSONDecodeError:
|
||||||
|
cached_data = self._default_data
|
||||||
|
return cached_data
|
||||||
|
else:
|
||||||
|
return self._default_data
|
||||||
|
|
||||||
|
def _save_cached_data(self, data):
|
||||||
|
data['last_update'] = time.time()
|
||||||
|
with open(self.config['cache_file'], 'w', encoding='utf-8') as cache_file:
|
||||||
|
json.dump(data, cache_file, indent=2)
|
||||||
|
|
||||||
def _init_log(self):
|
def _init_log(self):
|
||||||
''' Initialize log object '''
|
''' Initialize log object '''
|
||||||
|
@ -82,12 +123,24 @@ class __project_codename_camel__:
|
||||||
),
|
),
|
||||||
help='Set the debug level for the standard output.'
|
help='Set the debug level for the standard output.'
|
||||||
)
|
)
|
||||||
@click.option('--log-file', '-l', help="File to store all debug messages.")
|
@click.option(
|
||||||
|
'--log-file',
|
||||||
|
'-l',
|
||||||
|
default=f"{LOG_FOLDER}/__project_code_name__.log",
|
||||||
|
help="File to store all debug messages."
|
||||||
|
)
|
||||||
|
@click.option(
|
||||||
|
'--max-cache-age',
|
||||||
|
'-a',
|
||||||
|
default=60*60*24*7,
|
||||||
|
help='Max age in seconds for the cache'
|
||||||
|
)
|
||||||
# @click.option("--dummy","-n", is_flag=True,
|
# @click.option("--dummy","-n", is_flag=True,
|
||||||
# help="Don't do anything, just show what would be done.")
|
# help="Don't do anything, just show what would be done.")
|
||||||
@click_config_file.configuration_option()
|
@click_config_file.configuration_option()
|
||||||
def __main__(**kwargs):
|
def __main__(**kwargs):
|
||||||
return __project_codename_camel__(**kwargs)
|
obj = __project_codename_camel__(**kwargs)
|
||||||
|
obj.close()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
__main__()
|
__main__()
|
||||||
|
|
Loading…
Reference in a new issue