Files
bearhub/bauh/gems/arch/database.py
2022-12-12 07:44:27 -03:00

54 lines
1.8 KiB
Python

import logging
import os
import time
import traceback
from datetime import datetime
from logging import Logger
from pathlib import Path
from typing import Optional
from bauh.api.paths import CACHE_DIR
from bauh.commons.system import ProcessHandler
SYNC_FILE = f'{CACHE_DIR}/arch/db_sync'
def should_sync(arch_config: dict, aur_supported: bool, handler: Optional[ProcessHandler], logger: logging.Logger):
if aur_supported or arch_config['repositories']:
if os.path.exists(SYNC_FILE):
with open(SYNC_FILE) as f:
sync_file = f.read()
try:
sync_time = datetime.fromtimestamp(int(sync_file))
now = datetime.now()
if now > sync_time and now.day != sync_time.day:
logger.info("Package databases synchronization out of date")
else:
msg = "Package databases already synchronized"
logger.info(msg)
if handler:
handler.watcher.print(msg)
return False
except Exception:
logger.warning("Could not convert the database synchronization time from '{}".format(SYNC_FILE))
traceback.print_exc()
return True
else:
msg = "Package databases synchronization disabled"
if handler:
handler.watcher.print(msg)
logger.info(msg)
return False
def register_sync(logger: Logger):
try:
Path('/'.join(SYNC_FILE.split('/')[0:-1])).mkdir(parents=True, exist_ok=True)
with open(SYNC_FILE, 'w+') as f:
f.write(str(int(time.time())))
except Exception:
logger.error("Could not write to database sync file '{}'".format(SYNC_FILE))
traceback.print_exc()