Coverage for src/rsnapshot_docker_compose_backup/backup_planer.py: 0%
33 statements
« prev ^ index » next coverage.py v7.5.4, created at 2024-07-07 01:03 +0200
« prev ^ index » next coverage.py v7.5.4, created at 2024-07-07 01:03 +0200
1#!/usr/bin/env python3
3# This Script is used to create a config file for rsnapshot that can be used to backup
4# different docker-compose container.
7import argparse
9# Imports for typing
10from dataclasses import dataclass
11import os
12from pathlib import Path
13from typing import List
15from rsnapshot_docker_compose_backup.structure.container import Container
17# Other imports
18from rsnapshot_docker_compose_backup.global_values import set_folder, set_config_file
19from rsnapshot_docker_compose_backup import docker
22@dataclass
23class ProgramArgs:
24 folder: Path
25 config: Path
28def parse_arguments() -> ProgramArgs:
29 ap = argparse.ArgumentParser()
30 ap.add_argument(
31 "-f",
32 "--folder",
33 required=False,
34 help="Path to the root folder of all docker-compose folders",
35 default=os.getcwd(),
36 )
37 ap.add_argument(
38 "-c",
39 "--config",
40 required=False,
41 help="Path to the root config file, if it isn't in the root docker-compose folder",
42 default="",
43 )
44 args = vars(ap.parse_args())
45 return ProgramArgs(folder=args["folder"], config=args["config"])
48def run(args: ProgramArgs) -> str:
49 set_folder(args.folder)
50 set_config_file(args.config)
51 docker_container: List[Container] = docker.get_compose_container()
52 result: List[str] = []
53 for container in docker_container:
54 container_result = container.backup()
55 if container_result:
56 result.append(container_result)
57 return "\n".join(result)
60def main() -> None:
61 args: ProgramArgs = parse_arguments()
62 print(run(args))
65if __name__ == "__main__":
66 main()