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

1#!/usr/bin/env python3 

2 

3# This Script is used to create a config file for rsnapshot that can be used to backup 

4# different docker-compose container. 

5 

6 

7import argparse 

8 

9# Imports for typing 

10from dataclasses import dataclass 

11import os 

12from pathlib import Path 

13from typing import List 

14 

15from rsnapshot_docker_compose_backup.structure.container import Container 

16 

17# Other imports 

18from rsnapshot_docker_compose_backup.global_values import set_folder, set_config_file 

19from rsnapshot_docker_compose_backup import docker 

20 

21 

22@dataclass 

23class ProgramArgs: 

24 folder: Path 

25 config: Path 

26 

27 

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"]) 

46 

47 

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) 

58 

59 

60def main() -> None: 

61 args: ProgramArgs = parse_arguments() 

62 print(run(args)) 

63 

64 

65if __name__ == "__main__": 

66 main()