@@ -462,37 +462,51 @@ def view_install(self, view_name, name, force=False):
462
462
view .confirm_install (module .module_dir , force = force )
463
463
view .install (module .module_dir )
464
464
465
- def reinstall (self , module , force = False ):
465
+ def reinstall (self , name , when_missing = None ):
466
466
"""
467
467
Reinstall the module, or all modules
468
468
"""
469
- if module :
470
- module_name , _ , version = module .partition (":" )
469
+ if name :
470
+ module_name , _ , version = name .partition (":" )
471
471
# Find all the versions currently installed
472
472
installed_modules = self ._get_module_lookup (
473
473
self .settings .module_base , self .modulefile , module_name
474
474
)
475
475
if (module_name not in installed_modules ) or (
476
476
version and version not in installed_modules [module_name ]
477
477
):
478
- logger .exit ("%s is not installed. Nothing to reinstall." % module )
478
+ logger .exit ("%s is not installed. Nothing to reinstall." % name )
479
479
versions = [version ] if version else installed_modules [module_name ]
480
480
# Reinstall the required version(s) one by one
481
481
for version in versions :
482
- self .install (module_name + ":" + version , allow_reinstall = True )
482
+ self ._reinstall (module_name , version , when_missing )
483
483
else :
484
484
# Reinstall everything that is currently installed
485
485
installed_modules = self ._get_module_lookup (
486
486
self .settings .module_base , self .modulefile
487
487
)
488
488
for module_name , versions in installed_modules .items ():
489
489
for version in versions :
490
- self .install (module_name + ":" + version , allow_reinstall = True )
490
+ self ._reinstall (module_name , version , when_missing )
491
491
492
- def _reinstall (self , module_name , versions , upgrade = False , force = False ):
492
+ def _reinstall (self , module_name , version , when_missing ):
493
493
"""
494
494
Reinstall (and possibly upgrade) all the current modules, possibly filtered by pattern.
495
495
"""
496
+ config = self .load_registry_config (module_name )
497
+ if version in config .tags :
498
+ self .install (module_name + ":" + version , allow_reinstall = True )
499
+ elif when_missing == "ignore" :
500
+ pass
501
+ elif when_missing == "uninstall" :
502
+ self .uninstall (module_name + ":" + version , force = True )
503
+ else :
504
+ logger .exit (
505
+ "%s is not in the Registry any more. Add --uninstall-missing or --ignore-missing."
506
+ % module_name
507
+ )
508
+
509
+ def _upgrade (self , module_name , versions , upgrade = False , force = False ):
496
510
result = self .registry .find (module_name )
497
511
if result :
498
512
0 commit comments