1- from typing import List , Optional , Iterable
1+ from typing import List , Optional , Iterable , Union
22
3- from gitlab .v4 .objects import Project
3+ from gitlab import Gitlab
4+ from gitlab .v4 .objects import Project , ProjectManager
45
5- from gitlab_submodule .objects import GitmodulesSubmodule , ProjectSubmodule
6+ from gitlab_submodule .objects import Submodule , Subproject
67from gitlab_submodule .read_gitmodules import list_project_submodules
78from gitlab_submodule .gitmodules_to_project import gitmodules_to_project
89from gitlab_submodule .submodule_commit import get_submodule_commit
910
1011
11- def list_all_project_submodules (
12- project : Project ,
13- ref : Optional [str ] = None ) -> List [GitmodulesSubmodule ]:
14- return list_project_submodules (project , ref )
12+ list_submodules = list_project_submodules
13+
14+
15+ def _get_project_manager (
16+ gitlab_object : Union [Gitlab , ProjectManager ]) -> ProjectManager :
17+ if isinstance (gitlab_object , ProjectManager ):
18+ return gitlab_object
19+ elif isinstance (gitlab_object , Gitlab ):
20+ return gitlab_object .projects
21+ else :
22+ raise TypeError ('Needs a Gitlab instance or its ProjectManager' )
1523
1624
17- def read_gitlab_submodule (
18- gitmodules_submodule : GitmodulesSubmodule ,
25+ def submodule_to_subproject (
26+ gitmodules_submodule : Submodule ,
27+ gitlab : Union [Gitlab , ProjectManager ],
1928 get_latest_commit_possible_if_not_found : bool = True ,
2029 get_latest_commit_possible_ref : Optional [str ] = None
21- ) -> ProjectSubmodule :
22- submodule_project = gitmodules_to_project (gitmodules_submodule )
30+ ) -> Subproject :
31+ submodule_project = gitmodules_to_project (gitmodules_submodule ,
32+ _get_project_manager (gitlab ))
2333 submodule_commit , commit_is_exact = get_submodule_commit (
2434 gitmodules_submodule ,
2535 submodule_project ,
2636 get_latest_commit_possible_if_not_found ,
2737 get_latest_commit_possible_ref )
28- return ProjectSubmodule (
38+ return Subproject (
2939 gitmodules_submodule ,
3040 submodule_project ,
3141 submodule_commit ,
3242 commit_is_exact
3343 )
3444
3545
36- def iterate_gitlab_project_submodules (
46+ def iterate_subprojects (
3747 project : Project ,
48+ gitlab : Union [Gitlab , ProjectManager ],
3849 ref : Optional [str ] = None ,
3950 get_latest_commit_possible_if_not_found : bool = True ,
4051 get_latest_commit_possible_ref : Optional [str ] = None
41- ) -> Iterable [ProjectSubmodule ]:
42- for gitmodules_submodule in list_all_project_submodules (project , ref ):
52+ ) -> Iterable [Subproject ]:
53+ for gitmodules_submodule in list_project_submodules (project , ref ):
4354 try :
44- yield read_gitlab_submodule (
55+ yield submodule_to_subproject (
4556 gitmodules_submodule ,
57+ _get_project_manager (gitlab ),
4658 get_latest_commit_possible_if_not_found ,
4759 get_latest_commit_possible_ref )
4860 except ValueError :
@@ -51,5 +63,5 @@ def iterate_gitlab_project_submodules(
5163 raise
5264
5365
54- def list_gitlab_project_submodules (* args , ** kwargs ) -> List [ProjectSubmodule ]:
55- return list (iterate_gitlab_project_submodules (* args , ** kwargs ))
66+ def list_subprojects (* args , ** kwargs ) -> List [Subproject ]:
67+ return list (iterate_subprojects (* args , ** kwargs ))
0 commit comments