48
48
print ("Need Python 3, you are running {}" .format (MAJOR_VERSION ))
49
49
sys .exit (1 )
50
50
51
- __version__ = "0.2 "
51
+ __version__ = "0.3 "
52
52
53
53
54
54
def exec_command (doit , logger , cmd , msg ):
@@ -161,7 +161,7 @@ def project_add(doit, logger, project, uri):
161
161
add_project (logger , project , uri )
162
162
163
163
164
- def project_delete (doit , logger , project , uri ):
164
+ def project_delete (logger , project , uri , doit = True , deletesource = False ):
165
165
"""
166
166
Delete the project for configuration and all its data.
167
167
Works in multiple steps:
@@ -180,15 +180,16 @@ def project_delete(doit, logger, project, uri):
180
180
if doit :
181
181
delete_project (logger , project , uri )
182
182
183
- src_root = get_config_value (logger , 'sourceRoot' , uri )
184
- if not src_root or len (src_root ) == 0 :
185
- raise Exception ("source root empty" )
186
- logger .debug ("Source root = {}" .format (src_root ))
187
- sourcedir = path .join (src_root , project )
188
- logger .debug ("Removing directory tree {}" .format (sourcedir ))
189
- if doit :
190
- logger .info ("Removing source code under {}" .format (sourcedir ))
191
- shutil .rmtree (sourcedir )
183
+ if deletesource :
184
+ src_root = get_config_value (logger , 'sourceRoot' , uri )
185
+ if not src_root or len (src_root ) == 0 :
186
+ raise Exception ("source root empty" )
187
+ logger .debug ("Source root = {}" .format (src_root ))
188
+ sourcedir = path .join (src_root , project )
189
+ logger .debug ("Removing directory tree {}" .format (sourcedir ))
190
+ if doit :
191
+ logger .info ("Removing source code under {}" .format (sourcedir ))
192
+ shutil .rmtree (sourcedir )
192
193
193
194
194
195
if __name__ == '__main__' :
@@ -211,6 +212,9 @@ def project_delete(doit, logger, project, uri):
211
212
parser .add_argument ('-n' , '--noop' , action = 'store_true' , default = False ,
212
213
help = 'Do not run any commands or modify any config'
213
214
', just report. Usually implies the --debug option.' )
215
+ parser .add_argument ('-N' , '--nosourcedelete' , action = 'store_true' ,
216
+ default = False , help = 'Do not delete source code when '
217
+ 'deleting a project' )
214
218
215
219
group = parser .add_mutually_exclusive_group ()
216
220
group .add_argument ('-a' , '--add' , metavar = 'project' , nargs = '+' ,
@@ -237,6 +241,10 @@ def project_delete(doit, logger, project, uri):
237
241
238
242
logger = logging .getLogger (os .path .basename (sys .argv [0 ]))
239
243
244
+ if args .nosourcedelete and not args .delete :
245
+ logger .error ("The no source delete option is only valid for delete" )
246
+ sys .exit (1 )
247
+
240
248
# Set the base directory
241
249
if args .base :
242
250
if path .isdir (args .base ):
@@ -284,9 +292,10 @@ def project_delete(doit, logger, project, uri):
284
292
roconfig = args .roconfig )
285
293
elif args .delete :
286
294
for proj in args .delete :
287
- project_delete (doit = doit , logger = logger ,
295
+ project_delete (logger = logger ,
288
296
project = proj ,
289
- uri = uri )
297
+ uri = uri , doit = doit ,
298
+ deletesource = not args .nosourcedelete )
290
299
291
300
config_refresh (doit = doit , logger = logger ,
292
301
basedir = args .base ,
0 commit comments