@@ -80,6 +80,9 @@ def parse_args():
8080 parser .add_argument (
8181 '--auto' , '-a' , action = 'store_true' , default = False ,
8282 help = 'Automatically install every update found' )
83+ parser .add_argument (
84+ '--continue-on-fail' , '-C' , action = 'store_true' , default = False ,
85+ help = 'Continue with other installs when one fails' )
8386 return parser .parse_known_args ()
8487
8588
@@ -163,12 +166,17 @@ def ask(self, prompt):
163166ask_to_install = partial (InteractiveAsker ().ask , prompt = 'Upgrade now?' )
164167
165168
166- def update_packages (packages , forwarded ):
167- command = pip_cmd () + ['install' , '-U' ] + forwarded + [
168- '{0}' .format (pkg ['name' ]) for pkg in packages
169- ]
169+ def update_packages (packages , forwarded , continue_on_fail ):
170+ upgrade_cmd = pip_cmd () + ['install' , '-U' ] + forwarded
171+ if not continue_on_fail :
172+ upgrade_cmd += ['{0}' .format (pkg ['name' ]) for pkg in packages ]
173+ subprocess .call (upgrade_cmd , stdout = sys .stdout , stderr = sys .stderr )
174+ return
170175
171- subprocess .call (command , stdout = sys .stdout , stderr = sys .stderr )
176+ for pkg in packages :
177+ upgrade_cmd += ['{0}' .format (pkg ['name' ])]
178+ subprocess .call (upgrade_cmd , stdout = sys .stdout , stderr = sys .stderr )
179+ upgrade_cmd .pop ()
172180
173181
174182def confirm (question ):
@@ -224,7 +232,7 @@ def main():
224232 if not outdated and not args .raw :
225233 logger .info ('Everything up-to-date' )
226234 elif args .auto :
227- update_packages (outdated , install_args )
235+ update_packages (outdated , install_args , args . continue_on_fail )
228236 elif args .raw :
229237 for pkg in outdated :
230238 logger .info ('{0}=={1}' .format (pkg ['name' ], pkg ['latest_version' ]))
@@ -239,7 +247,7 @@ def main():
239247 if answer in ['y' , 'a' ]:
240248 selected .append (pkg )
241249 if selected :
242- update_packages (selected , install_args )
250+ update_packages (selected , install_args , args . continue_on_fail )
243251
244252
245253if __name__ == '__main__' :
0 commit comments