Browse Source

Добавил красоты.

master
Дмитрий 3 years ago
parent
commit
c9d0f27d20
  1. 57
      pyback.py

57
pyback.py

@ -7,6 +7,12 @@ import argparse
from typing import List
from rich import print
from rich.prompt import Prompt
from rich.padding import Padding
from rich.panel import Panel
from rich.text import Text
from rich.table import Table
from rich.console import Console
from rich import box
@dataclass
@ -19,9 +25,8 @@ class Job:
# Добавить обозначения {warn} {good} {error} {nice}, менять их на
# символы и красить вывод консоли
def run_job(job: Job) -> None:
def run_job(job: Job, console: Console) -> None:
"""Запусить задачу бэкапа."""
print(f"Начинаю {job.name}")
date = datetime.today().strftime("%Y-%m-%d")
time = datetime.now().strftime("%H%M")
@ -30,13 +35,20 @@ def run_job(job: Job) -> None:
if not os.path.isdir(path):
os.makedirs(path)
# BOLDYELLOW="\e[1;33m[!]\e[0m"
# ENDCOLOR="\e[0m"
cmd = (
job.action.replace("{name}", job.name)
.replace("{date}", date)
.replace("{time}", time)
.replace("{warn}", "\033[33m[!]\033[0m")
)
os.system(cmd)
with console.status(
f"[bold yellow]\[..][/bold yellow] [bold]{job.name}[/bold] начинаю ..."
):
os.system(cmd)
print(f"[bold green]\[OK][/bold green] [bold]{job.name}[/bold] выполнено")
def ask_about_backups(jobs: List[Job], force_all: bool) -> List[Job]:
@ -60,7 +72,12 @@ def ask_about_backups(jobs: List[Job], force_all: bool) -> List[Job]:
изменено на True (задача активна), либо установленно False
(задача не активна).
"""
if force_all:
for job in jobs:
job.active = True
return jobs
print(Panel(Text("Составляю список задач", justify="center")))
for job in jobs:
answer = Prompt.ask(
f"Архивируем [bold]{job.name}[/bold]?",
@ -74,6 +91,7 @@ def ask_about_backups(jobs: List[Job], force_all: bool) -> List[Job]:
job.active = False
print("[bold red]\[-] Пропуск задачи[/bold red]")
print(Panel(Text("Список задач составлен, начинаю бэкап", justify="center")))
return jobs
@ -109,18 +127,29 @@ if __name__ == "__main__":
help="выполнить все задачи из списка без запроса подтверждения",
)
args = parser.parse_args()
console = Console()
jobs = yaml_loader(os.path.abspath(args.file))
# если флаг принудительного бэкапа всего, то мы прохоидм в цикле
# все джобы и ставим их active в true
if not args.forceall:
ask_about_backups(jobs)
print("-----------------------")
else:
for j in jobs:
j.active = True
jobs = ask_about_backups(jobs, args.forceall)
for j in jobs:
if j.active:
run_job(j)
run_job(j, console)
# table = Table(title="Результаты бэкапов", box=box.SIMPLE)
# table.add_column("Задача", justify="right", style="cyan", no_wrap=True)
# table.add_column("Архив", style="magenta")
# table.add_column("Статус", justify="right", style="green")
# table.add_row(
# "Archives криппи и прочее",
# "/back/Archives/Archives-{date}-{time}",
# "ОК",
# )
# table.add_row(
# "Archivebox-emacs",
# "/back/Archives/Archivebox-emacs",
# "Пропуск",
# )
# console.print(table, justify="center")

Loading…
Cancel
Save