@@ -536,7 +536,7 @@ export class ExtensionManagementService extends Disposable implements IExtension
536536 . then ( installed => {
537537 const promises = installed
538538 . filter ( e => e . manifest . publisher === extension . manifest . publisher && e . manifest . name === extension . manifest . name )
539- . map ( e => this . checkForDependenciesAndUninstall ( e , installed , force ) ) ;
539+ . map ( e => this . checkForDependenciesAndUninstall ( e , installed ) ) ;
540540 return TPromise . join ( promises ) . then ( ( ) => null , error => TPromise . wrapError ( this . joinErrors ( error ) ) ) ;
541541 } ) ) ;
542542 }
@@ -593,23 +593,14 @@ export class ExtensionManagementService extends Disposable implements IExtension
593593 } , new Error ( '' ) ) ;
594594 }
595595
596- private checkForDependenciesAndUninstall ( extension : ILocalExtension , installed : ILocalExtension [ ] , force : boolean ) : TPromise < void > {
596+ private checkForDependenciesAndUninstall ( extension : ILocalExtension , installed : ILocalExtension [ ] ) : TPromise < void > {
597597 return this . preUninstallExtension ( extension )
598598 . then ( ( ) => {
599599 const packedExtensions = this . getAllPackExtensionsToUninstall ( extension , installed ) ;
600600 if ( packedExtensions . length ) {
601601 return this . uninstallExtensions ( extension , packedExtensions , installed ) ;
602602 }
603- const dependencies = this . getDependenciesToUninstall ( extension , installed ) ;
604- if ( dependencies . length ) {
605- if ( force ) {
606- return this . uninstallExtensions ( extension , dependencies , installed ) ;
607- } else {
608- return this . promptForDependenciesAndUninstall ( extension , dependencies , installed ) ;
609- }
610- } else {
611- return this . uninstallExtensions ( extension , [ ] , installed ) ;
612- }
603+ return this . uninstallExtensions ( extension , [ ] , installed ) ;
613604 } )
614605 . then ( ( ) => this . postUninstallExtension ( extension ) ,
615606 error => {
@@ -618,26 +609,6 @@ export class ExtensionManagementService extends Disposable implements IExtension
618609 } ) ;
619610 }
620611
621- private promptForDependenciesAndUninstall ( extension : ILocalExtension , dependencies : ILocalExtension [ ] , installed : ILocalExtension [ ] ) : TPromise < void > {
622- const message = nls . localize ( 'uninstallDependeciesConfirmation' , "Also uninstall the dependencies of the extension '{0}'?" , extension . manifest . displayName || extension . manifest . name ) ;
623- const buttons = [
624- nls . localize ( 'yes' , "Yes" ) ,
625- nls . localize ( 'no' , "No" ) ,
626- nls . localize ( 'cancel' , "Cancel" )
627- ] ;
628- return this . dialogService . show ( Severity . Info , message , buttons , { cancelId : 2 } )
629- . then < void > ( value => {
630- if ( value === 0 ) {
631- return this . uninstallExtensions ( extension , dependencies , installed ) ;
632- }
633- if ( value === 1 ) {
634- return this . uninstallExtensions ( extension , [ ] , installed ) ;
635- }
636- this . logService . info ( 'Cancelled uninstalling extension:' , extension . identifier . id ) ;
637- return TPromise . wrapError ( errors . canceled ( ) ) ;
638- } , error => TPromise . wrapError ( errors . canceled ( ) ) ) ;
639- }
640-
641612 private uninstallExtensions ( extension : ILocalExtension , otherExtensionsToUninstall : ILocalExtension [ ] , installed : ILocalExtension [ ] ) : TPromise < void > {
642613 const dependents = this . getDependents ( extension , installed ) ;
643614 if ( dependents . length ) {
@@ -662,38 +633,6 @@ export class ExtensionManagementService extends Disposable implements IExtension
662633 extension . manifest . displayName || extension . manifest . name , dependents [ 0 ] . manifest . displayName || dependents [ 0 ] . manifest . name , dependents [ 1 ] . manifest . displayName || dependents [ 1 ] . manifest . name ) ;
663634 }
664635
665- private getDependenciesToUninstall ( extension : ILocalExtension , installed : ILocalExtension [ ] ) : ILocalExtension [ ] {
666- const dependencies = this . getAllDependenciesToUninstall ( extension , installed ) . filter ( e => e !== extension ) ;
667-
668- const dependenciesToUninstall = dependencies . slice ( 0 ) ;
669- for ( let index = 0 ; index < dependencies . length ; index ++ ) {
670- const dep = dependencies [ index ] ;
671- const dependents = this . getDependents ( dep , installed ) ;
672- // Remove the dependency from the uninstall list if there is a dependent which will not be uninstalled.
673- if ( dependents . some ( e => e !== extension && dependencies . indexOf ( e ) === - 1 ) ) {
674- dependenciesToUninstall . splice ( index - ( dependencies . length - dependenciesToUninstall . length ) , 1 ) ;
675- }
676- }
677-
678- return dependenciesToUninstall ;
679- }
680-
681- private getAllDependenciesToUninstall ( extension : ILocalExtension , installed : ILocalExtension [ ] , checked : ILocalExtension [ ] = [ ] ) : ILocalExtension [ ] {
682- if ( checked . indexOf ( extension ) !== - 1 ) {
683- return [ ] ;
684- }
685- checked . push ( extension ) ;
686- if ( ! extension . manifest . extensionDependencies || extension . manifest . extensionDependencies . length === 0 ) {
687- return [ ] ;
688- }
689- const dependenciesToUninstall = installed . filter ( i => extension . manifest . extensionDependencies . some ( id => areSameExtensions ( { id } , i . galleryIdentifier ) ) ) ;
690- const depsOfDeps = [ ] ;
691- for ( const dep of dependenciesToUninstall ) {
692- depsOfDeps . push ( ...this . getAllDependenciesToUninstall ( dep , installed , checked ) ) ;
693- }
694- return [ ...dependenciesToUninstall , ...depsOfDeps ] ;
695- }
696-
697636 private getAllPackExtensionsToUninstall ( extension : ILocalExtension , installed : ILocalExtension [ ] , checked : ILocalExtension [ ] = [ ] ) : ILocalExtension [ ] {
698637 if ( checked . indexOf ( extension ) !== - 1 ) {
699638 return [ ] ;
0 commit comments