Coverage for tools/create_gitlab_projects.py: 76%

25 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-09-02 05:55 +0000

1"""Create GitLab repositories from folder.""" 

2 

3import sys 

4from argparse import Namespace 

5 

6from sel_tools.config import REPO_DIR 

7from sel_tools.file_export.solutions_check import check_code_for_solutions_code 

8from sel_tools.gitlab_api.create_issue import EVALUATION_DASHBOARD_TASK, create_issues 

9from sel_tools.gitlab_api.create_repo import create_repos, store_student_repo_info_to_config_file 

10from sel_tools.utils.args import ArgumentParserFactory 

11 

12 

13def parse_arguments(arguments: list[str]) -> Namespace: 

14 """Parse CLI arguments.""" 

15 factory = ArgumentParserFactory.default_parser(__doc__) 

16 factory.add_repo_base_name() 

17 factory.add_group_id() 

18 factory.add_repo_info_dir() 

19 factory.add_source_folder(REPO_DIR / "export" / "homework") 

20 factory.add_number_of_repos() 

21 factory.add_gitlab_token() 

22 factory.add_publish_solutions() 

23 

24 return factory.parser.parse_args(arguments[1:]) 

25 

26 

27def main() -> None: 

28 """Main.""" 

29 arguments = parse_arguments(sys.argv) 

30 check_code_for_solutions_code(arguments.source_path, arguments.publish_solutions) 

31 student_repos, group_name = create_repos( 

32 arguments.source_path, 

33 arguments.repo_base_name, 

34 arguments.group_id, 

35 arguments.number_of_repos, 

36 arguments.gitlab_token, 

37 ) 

38 config_path = store_student_repo_info_to_config_file(arguments.repo_info_dir, group_name, student_repos) 

39 create_issues([EVALUATION_DASHBOARD_TASK], config_path, arguments.gitlab_token) 

40 

41 

42if __name__ == "__main__": 

43 main()