77
88import os
99import shutil
10- import logging
11- import textwrap
1210import asyncio
11+ import logging
12+ from configparser import NoOptionError
1313from git_fleximod import utils
1414from git_fleximod import cli
1515from git_fleximod .gitinterface import GitInterface
1616from git_fleximod .gitmodules import GitModules
1717from git_fleximod .submodule import Submodule
1818
19- # logger variable is global
20- logger = None
19+ logger = logging .getLogger (__name__ )
2120
2221
2322def fxrequired_allowed_values ():
24- return ["ToplevelRequired" , "ToplevelOptional" , "AlwaysRequired" , "AlwaysOptional" , "TopLevelRequired" , "TopLevelOptional" ]
23+ return [
24+ "ToplevelRequired" ,
25+ "ToplevelOptional" ,
26+ "AlwaysRequired" ,
27+ "AlwaysOptional" ,
28+ "TopLevelRequired" ,
29+ "TopLevelOptional" ,
30+ ]
2531
2632
2733def commandline_arguments (args = None ):
@@ -152,8 +158,8 @@ def submodule_sparse_checkout(root_dir, name, url, path, sparsefile, tag="master
152158
153159 if os .path .isdir (os .path .join (root_dir , path , ".git" )):
154160 with utils .pushd (sprep_repo ):
155- if os .path .isdir (os .path .join (topgit ,".git" )):
156- shutil .rmtree (os .path .join (topgit ,".git" ))
161+ if os .path .isdir (os .path .join (topgit , ".git" )):
162+ shutil .rmtree (os .path .join (topgit , ".git" ))
157163 shutil .move (".git" , topgit )
158164 with open (".git" , "w" ) as f :
159165 f .write ("gitdir: " + os .path .relpath (topgit ))
@@ -168,7 +174,6 @@ def submodule_sparse_checkout(root_dir, name, url, path, sparsefile, tag="master
168174 with utils .pushd (sprep_repo ):
169175 if os .path .isfile (sparsefile ):
170176 shutil .copy (sparsefile , gitsparse )
171-
172177
173178 # Finally checkout the repo
174179 sprepo_git .git_operation ("fetch" , "origin" , "--tags" )
@@ -178,7 +183,8 @@ def submodule_sparse_checkout(root_dir, name, url, path, sparsefile, tag="master
178183 rgit .config_set_value (f'submodule "{ name } "' , "active" , "true" )
179184 rgit .config_set_value (f'submodule "{ name } "' , "url" , url )
180185
181- def init_submodule_from_gitmodules (gitmodules , name , root_dir , logger ):
186+
187+ def init_submodule_from_gitmodules (gitmodules , name , root_dir , llogger ):
182188 path = gitmodules .get (name , "path" )
183189 url = gitmodules .get (name , "url" )
184190 assert path and url , f"Malformed .gitmodules file { path } { url } "
@@ -188,16 +194,29 @@ def init_submodule_from_gitmodules(gitmodules, name, root_dir, logger):
188194 fxurl = gitmodules .get (name , "fxDONOTUSEurl" )
189195 fxsparse = gitmodules .get (name , "fxsparse" )
190196 fxrequired = gitmodules .get (name , "fxrequired" )
191- return Submodule (root_dir , name , path , url , fxtag = tag , fxurl = fxurl , fxsparse = fxsparse , fxrequired = fxrequired , logger = logger )
197+ return Submodule (
198+ root_dir ,
199+ name ,
200+ path ,
201+ url ,
202+ fxtag = tag ,
203+ fxurl = fxurl ,
204+ fxsparse = fxsparse ,
205+ fxrequired = fxrequired ,
206+ logger = llogger ,
207+ )
208+
192209
193- def submodules_status (gitmodules , root_dir , toplevel = False , depth = 0 , no_mods_details = False ):
210+ def submodules_status (
211+ gitmodules , root_dir , toplevel = False , depth = 0 , no_mods_details = False
212+ ):
194213 testfails = 0
195214 localmods = 0
196215 needsupdate = 0
197216 for name in gitmodules .sections ():
198217 submod = init_submodule_from_gitmodules (gitmodules , name , root_dir , logger )
199218
200- result ,n , l , t = submod .status (depth = depth , no_mods_details = no_mods_details )
219+ result , n , l , t = submod .status (depth = depth , no_mods_details = no_mods_details )
201220 if toplevel or not submod .toplevel ():
202221 print (result )
203222 testfails += t
@@ -216,33 +235,32 @@ def submodules_status(gitmodules, root_dir, toplevel=False, depth=0, no_mods_det
216235
217236 return testfails , localmods , needsupdate
218237
219- def git_toplevelroot (root_dir , logger ):
220- rgit = GitInterface (root_dir , logger )
238+
239+ def git_toplevelroot (root_dir , llogger ):
240+ rgit = GitInterface (root_dir , llogger )
221241 _ , superroot = rgit .git_operation ("rev-parse" , "--show-superproject-working-tree" )
222242 return superroot
223243
244+
224245async def submodules_update (gitmodules , root_dir , requiredlist , force ):
225246 async def update_submodule (name , requiredlist , force ):
226247 submod = init_submodule_from_gitmodules (gitmodules , name , root_dir , logger )
227248
228- _ , needsupdate , localmods , testfails = submod .status ()
229249 if not submod .fxrequired :
230250 submod .fxrequired = "AlwaysRequired"
231- fxrequired = submod .fxrequired
251+ fxrequired = submod .fxrequired
232252 allowedvalues = fxrequired_allowed_values ()
233253 assert fxrequired in allowedvalues
234254
235255 superroot = git_toplevelroot (root_dir , logger )
236-
237- if (
238- fxrequired
239- and ((superroot and "Toplevel" in fxrequired )
240- or fxrequired not in requiredlist )
256+
257+ if fxrequired and (
258+ (superroot and "Toplevel" in fxrequired ) or fxrequired not in requiredlist
241259 ):
242260 if "Optional" in fxrequired and "Optional" not in requiredlist :
243261 if fxrequired .startswith ("Always" ):
244262 print (f"Skipping optional component { name :>20} " )
245- return # continue to next submodule
263+ return # continue to next submodule
246264 optional = "AlwaysOptional" in requiredlist
247265
248266 if fxrequired in requiredlist :
@@ -255,11 +273,16 @@ async def update_submodule(name, requiredlist, force):
255273 newrequiredlist = ["AlwaysRequired" ]
256274 if optional :
257275 newrequiredlist .append ("AlwaysOptional" )
258- await submodules_update (gitsubmodules , repodir , newrequiredlist , force = force )
276+ await submodules_update (
277+ gitsubmodules , repodir , newrequiredlist , force = force
278+ )
259279
260- tasks = [update_submodule (name , requiredlist , force ) for name in gitmodules .sections ()]
280+ tasks = [
281+ update_submodule (name , requiredlist , force ) for name in gitmodules .sections ()
282+ ]
261283 await asyncio .gather (* tasks )
262284
285+
263286def local_mods_output ():
264287 text = """\
265288 The submodules labeled with 'M' above are not in a clean state.
@@ -273,6 +296,7 @@ def local_mods_output():
273296"""
274297 print (text )
275298
299+
276300def submodules_test (gitmodules , root_dir , no_mods_details = False ):
277301 """
278302 This function tests the git submodules based on the provided parameters.
@@ -327,7 +351,9 @@ def main():
327351 global logger
328352 logger = logging .getLogger (__name__ )
329353
330- logger .info ("action is {} root_dir={} file_name={}" .format (action , root_dir , file_name ))
354+ logger .info (
355+ "action is {} root_dir={} file_name={}" .format (action , root_dir , file_name )
356+ )
331357
332358 if not root_dir or not os .path .isfile (os .path .join (root_dir , file_name )):
333359 if root_dir :
0 commit comments