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
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-02 05:55 +0000
1"""Create GitLab repositories from folder."""
3import sys
4from argparse import Namespace
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
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()
24 return factory.parser.parse_args(arguments[1:])
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)
42if __name__ == "__main__":
43 main()