@@ -58,22 +58,6 @@ def substitute(self, template):
58
58
template = template .replace (key , replacewith )
59
59
return template
60
60
61
- def _cleanup (self , module_dir ):
62
- """
63
- Given a module directory, delete up to module base
64
- """
65
- # Exit early if the module directory for some reason was removed
66
- if not os .path .exists (module_dir ):
67
- return
68
- shutil .rmtree (module_dir )
69
-
70
- # If directories above it are empty, remove
71
- while module_dir != self .settings .module_base :
72
- if not utils .can_be_deleted (module_dir , [".version" ]):
73
- break
74
- shutil .rmtree (module_dir )
75
- module_dir = os .path .dirname (module_dir )
76
-
77
61
@property
78
62
def container_base (self ):
79
63
"""
@@ -106,25 +90,22 @@ def uninstall(self, name, force=False):
106
90
# Podman needs image deletion
107
91
self .container .delete (name )
108
92
109
- if container_dir != module_dir :
110
- self ._uninstall (container_dir , "$container_base/%s" % name , force )
111
- self ._uninstall (module_dir , "$module_base/%s" % name , force )
112
- else :
113
- self ._uninstall (module_dir , "$module_base/%s" % name , force )
93
+ if not force :
94
+ msg = name + "?"
95
+ if not utils .confirm_uninstall (msg , force ):
96
+ return
114
97
115
- def _uninstall (self , module_dir , name , force = False ):
116
- """
117
- Sub function, so we can pass more than one folder from uninstall
118
- """
119
- if os .path .exists (module_dir ):
120
- if not force :
121
- msg = "%s, and all content below it? " % name
122
- if not utils .confirm_uninstall (msg , force ):
123
- return
124
- self ._cleanup (module_dir )
125
- logger .info ("%s and all subdirectories have been removed." % name )
98
+ if container_dir != module_dir :
99
+ self ._uninstall (
100
+ container_dir , self .container_base , "$container_base/%s" % name
101
+ )
102
+ self ._uninstall (
103
+ module_dir , self .settings .module_base , "$module_base/%s" % name
104
+ )
126
105
else :
127
- logger .warning ("%s does not exist." % name )
106
+ self ._uninstall (
107
+ module_dir , self .settings .module_base , "$module_base/%s" % name
108
+ )
128
109
129
110
# parent of versioned directory has module .version
130
111
module_dir = os .path .dirname (module_dir )
@@ -133,6 +114,16 @@ def _uninstall(self, module_dir, name, force=False):
133
114
if os .path .exists (module_dir ):
134
115
self .write_version_file (module_dir )
135
116
117
+ def _uninstall (self , path , base_path , name ):
118
+ """
119
+ Sub function, so we can pass more than one folder from uninstall
120
+ """
121
+ if os .path .exists (path ):
122
+ utils .rmdir_to_base (path , base_path )
123
+ logger .info ("%s and all subdirectories have been removed." % name )
124
+ else :
125
+ logger .warning ("%s does not exist." % name )
126
+
136
127
def _test_setup (self , tmpdir ):
137
128
"""
138
129
Setup tests, including changes to settings or test directory
@@ -371,7 +362,7 @@ def install(self, name, tag=None, **kwargs):
371
362
module_dir , container_dir , config , tag
372
363
)
373
364
if not container_path :
374
- self . _cleanup (container_dir )
365
+ utils . rmdir_to_base (container_dir , self . container_base )
375
366
logger .exit ("There was an issue pulling %s" % container_path )
376
367
377
368
# Get the template based on the module and container type
@@ -401,7 +392,7 @@ def install(self, name, tag=None, **kwargs):
401
392
402
393
# If the container tech does not need storage, clean up
403
394
if not os .listdir (container_dir ):
404
- self . _cleanup (container_dir )
395
+ utils . rmdir_to_base (container_dir , self . container_base )
405
396
406
397
# Write the environment file to be bound to the container
407
398
self .container .add_environment (
0 commit comments