702d080a1e
Google BK
40 lines
2.4 KiB
Python
40 lines
2.4 KiB
Python
from datetime import datetime
|
|
|
|
from ..logger import getLogger
|
|
|
|
logger = getLogger(__name__)
|
|
|
|
BACKUP_NAME_KEYS = {
|
|
"{type}": lambda backup_type, now_local, host_info: backup_type,
|
|
"{year}": lambda backup_type, now_local, host_info: now_local.strftime("%Y"),
|
|
"{year_short}": lambda backup_type, now_local, host_info: now_local.strftime("%y"),
|
|
"{weekday}": lambda backup_type, now_local, host_info: now_local.strftime("%A"),
|
|
"{weekday_short}": lambda backup_type, now_local, host_info: now_local.strftime("%a"),
|
|
"{month}": lambda backup_type, now_local, host_info: now_local.strftime("%m"),
|
|
"{month_long}": lambda backup_type, now_local, host_info: now_local.strftime("%B"),
|
|
"{month_short}": lambda backup_type, now_local, host_info: now_local.strftime("%b"),
|
|
"{ms}": lambda backup_type, now_local, host_info: now_local.strftime("%f"),
|
|
"{day}": lambda backup_type, now_local, host_info: now_local.strftime("%d"),
|
|
"{hr24}": lambda backup_type, now_local, host_info: now_local.strftime("%H"),
|
|
"{hr12}": lambda backup_type, now_local, host_info: now_local.strftime("%I"),
|
|
"{min}": lambda backup_type, now_local, host_info: now_local.strftime("%M"),
|
|
"{sec}": lambda backup_type, now_local, host_info: now_local.strftime("%S"),
|
|
"{ampm}": lambda backup_type, now_local, host_info: now_local.strftime("%p"),
|
|
"{version_ha}": lambda backup_type, now_local, host_info: str(host_info.get('homeassistant', 'Unknown')),
|
|
"{version_hassos}": lambda backup_type, now_local, host_info: str(host_info.get('hassos', 'Unknown')),
|
|
"{version_super}": lambda backup_type, now_local, host_info: str(host_info.get('supervisor', 'Unknown')),
|
|
"{date}": lambda backup_type, now_local, host_info: now_local.strftime("%x"),
|
|
"{time}": lambda backup_type, now_local, host_info: now_local.strftime("%X"),
|
|
"{datetime}": lambda backup_type, now_local, host_info: now_local.strftime("%c"),
|
|
"{isotime}": lambda backup_type, now_local, host_info: now_local.isoformat(),
|
|
"{hostname}": lambda backup_type, now_local, host_info: str(host_info.get('hostname', 'Unknown')),
|
|
}
|
|
|
|
|
|
class BackupName():
|
|
def resolve(self, backup_type: str, template: str, now_local: datetime, host_info) -> str:
|
|
for key in BACKUP_NAME_KEYS:
|
|
template = template.replace(key, BACKUP_NAME_KEYS[key](
|
|
backup_type, now_local, host_info))
|
|
return template
|