Coverage for tools / create_gitlab_projects.py: 78%
27 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-02 18:55 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-02 18: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
10from sel_tools.gitlab_api.instance import create_gitlab_instance
11from sel_tools.utils.args import ArgumentParserFactory
12from sel_tools.utils.student_config import (
13 read_student_repo_info_from_config_file,
14 store_student_repo_info_to_config_file,
15)
18def parse_arguments(arguments: list[str]) -> Namespace:
19 """Parse CLI arguments."""
20 factory = ArgumentParserFactory.default_parser(__doc__)
21 factory.add_repo_base_name()
22 factory.add_group_id()
23 factory.add_repo_info_dir()
24 factory.add_source_folder(REPO_DIR / "export" / "homework")
25 factory.add_number_of_repos()
26 factory.add_gitlab_token()
27 factory.add_publish_solutions()
29 return factory.parser.parse_args(arguments[1:])
32def main() -> None:
33 """Main."""
34 arguments = parse_arguments(sys.argv)
35 check_code_for_solutions_code(arguments.source_path, arguments.publish_solutions)
36 student_repos, group_name = create_repos(
37 arguments.source_path,
38 arguments.repo_base_name,
39 arguments.group_id,
40 arguments.number_of_repos,
41 create_gitlab_instance(arguments.gitlab_token),
42 )
43 config_path = store_student_repo_info_to_config_file(arguments.repo_info_dir, group_name, student_repos)
44 create_issues(
45 [EVALUATION_DASHBOARD_TASK],
46 read_student_repo_info_from_config_file(config_path),
47 create_gitlab_instance(arguments.gitlab_token),
48 )
51if __name__ == "__main__":
52 main()