فهرست منبع

Fix cwhub collections uninstall dependencies (#1486)

* Fix cwhub collections uninstall dependencies
AlteredCoder 3 سال پیش
والد
کامیت
be977d1cc4
1فایلهای تغییر یافته به همراه15 افزوده شده و 3 حذف شده
  1. 15 3
      pkg/cwhub/install.go

+ 15 - 3
pkg/cwhub/install.go

@@ -34,9 +34,21 @@ func DisableItem(hub *csconfig.Hub, target Item, purge bool, force bool) (Item,
 			ptrtype := ItemTypes[idx]
 			ptrtype := ItemTypes[idx]
 			for _, p := range ptr {
 			for _, p := range ptr {
 				if val, ok := hubIdx[ptrtype][p]; ok {
 				if val, ok := hubIdx[ptrtype][p]; ok {
-					hubIdx[ptrtype][p], err = DisableItem(hub, val, purge, force)
-					if err != nil {
-						return target, errors.Wrap(err, fmt.Sprintf("while disabling %s", p))
+					// check if the item doesn't belong to another collection before removing it
+					toRemove := true
+					for _, collection := range val.BelongsToCollections {
+						if collection != target.Name {
+							toRemove = false
+							break
+						}
+					}
+					if toRemove {
+						hubIdx[ptrtype][p], err = DisableItem(hub, val, purge, force)
+						if err != nil {
+							return target, errors.Wrap(err, fmt.Sprintf("while disabling %s", p))
+						}
+					} else {
+						log.Infof("%s was not removed because it belongs to another collection", val.Name)
 					}
 					}
 				} else {
 				} else {
 					log.Errorf("Referred %s %s in collection %s doesn't exist.", ptrtype, p, target.Name)
 					log.Errorf("Referred %s %s in collection %s doesn't exist.", ptrtype, p, target.Name)