Browse Source

Allow cscli remove to remove with --all (#1360)

AlteredCoder 3 years ago
parent
commit
24797c1534

+ 18 - 14
cmd/crowdsec-cli/collections.go

@@ -67,26 +67,30 @@ func NewCollectionsCmd() *cobra.Command {
 		Short:             "Remove given collection(s)",
 		Short:             "Remove given collection(s)",
 		Long:              `Remove given collection(s) from hub`,
 		Long:              `Remove given collection(s) from hub`,
 		Example:           `cscli collections remove crowdsec/xxx crowdsec/xyz`,
 		Example:           `cscli collections remove crowdsec/xxx crowdsec/xyz`,
-		Args:              cobra.MinimumNArgs(1),
 		DisableAutoGenTag: true,
 		DisableAutoGenTag: true,
 		Run: func(cmd *cobra.Command, args []string) {
 		Run: func(cmd *cobra.Command, args []string) {
 			if all {
 			if all {
 				RemoveMany(cwhub.COLLECTIONS, "")
 				RemoveMany(cwhub.COLLECTIONS, "")
-			} else {
-				for _, name := range args {
-					if !forceAction {
-						item := cwhub.GetItem(cwhub.COLLECTIONS, name)
-						if item == nil {
-							log.Fatalf("unable to retrieve: %s\n", name)
-						}
-						if len(item.BelongsToCollections) > 0 {
-							log.Warningf("%s belongs to other collections :\n%s\n", name, item.BelongsToCollections)
-							log.Printf("Run 'sudo cscli collections remove %s --force' if you want to force remove this sub collection\n", name)
-							continue
-						}
+				return
+			}
+
+			if len(args) == 0 {
+				log.Fatalf("Specify at least one collection to remove or '--all' flag.")
+			}
+
+			for _, name := range args {
+				if !forceAction {
+					item := cwhub.GetItem(cwhub.COLLECTIONS, name)
+					if item == nil {
+						log.Fatalf("unable to retrieve: %s\n", name)
+					}
+					if len(item.BelongsToCollections) > 0 {
+						log.Warningf("%s belongs to other collections :\n%s\n", name, item.BelongsToCollections)
+						log.Printf("Run 'sudo cscli collections remove %s --force' if you want to force remove this sub collection\n", name)
+						continue
 					}
 					}
-					RemoveMany(cwhub.COLLECTIONS, name)
 				}
 				}
+				RemoveMany(cwhub.COLLECTIONS, name)
 			}
 			}
 		},
 		},
 	}
 	}

+ 9 - 5
cmd/crowdsec-cli/parsers.go

@@ -70,15 +70,19 @@ cscli parsers remove crowdsecurity/sshd-logs
 		Short:             "Remove given parser(s)",
 		Short:             "Remove given parser(s)",
 		Long:              `Remove given parse(s) from hub`,
 		Long:              `Remove given parse(s) from hub`,
 		Example:           `cscli parsers remove crowdsec/xxx crowdsec/xyz`,
 		Example:           `cscli parsers remove crowdsec/xxx crowdsec/xyz`,
-		Args:              cobra.MinimumNArgs(1),
 		DisableAutoGenTag: true,
 		DisableAutoGenTag: true,
 		Run: func(cmd *cobra.Command, args []string) {
 		Run: func(cmd *cobra.Command, args []string) {
 			if all {
 			if all {
 				RemoveMany(cwhub.PARSERS, "")
 				RemoveMany(cwhub.PARSERS, "")
-			} else {
-				for _, name := range args {
-					RemoveMany(cwhub.PARSERS, name)
-				}
+				return
+			}
+
+			if len(args) == 0 {
+				log.Fatalf("Specify at least one parser to remove or '--all' flag.")
+			}
+
+			for _, name := range args {
+				RemoveMany(cwhub.PARSERS, name)
 			}
 			}
 		},
 		},
 	}
 	}

+ 9 - 5
cmd/crowdsec-cli/postoverflows.go

@@ -70,14 +70,18 @@ func NewPostOverflowsCmd() *cobra.Command {
 		Long:              `remove given postoverflow(s)`,
 		Long:              `remove given postoverflow(s)`,
 		Example:           `cscli postoverflows remove crowdsec/xxx crowdsec/xyz`,
 		Example:           `cscli postoverflows remove crowdsec/xxx crowdsec/xyz`,
 		DisableAutoGenTag: true,
 		DisableAutoGenTag: true,
-		Args:              cobra.MinimumNArgs(1),
 		Run: func(cmd *cobra.Command, args []string) {
 		Run: func(cmd *cobra.Command, args []string) {
 			if all {
 			if all {
 				RemoveMany(cwhub.PARSERS_OVFLW, "")
 				RemoveMany(cwhub.PARSERS_OVFLW, "")
-			} else {
-				for _, name := range args {
-					RemoveMany(cwhub.PARSERS_OVFLW, name)
-				}
+				return
+			}
+
+			if len(args) == 0 {
+				log.Fatalf("Specify at least one postoverflow to remove or '--all' flag.")
+			}
+
+			for _, name := range args {
+				RemoveMany(cwhub.PARSERS_OVFLW, name)
 			}
 			}
 		},
 		},
 	}
 	}

+ 9 - 5
cmd/crowdsec-cli/scenarios.go

@@ -70,15 +70,19 @@ cscli scenarios remove crowdsecurity/ssh-bf
 		Short:             "Remove given scenario(s)",
 		Short:             "Remove given scenario(s)",
 		Long:              `remove given scenario(s)`,
 		Long:              `remove given scenario(s)`,
 		Example:           `cscli scenarios remove crowdsec/xxx crowdsec/xyz`,
 		Example:           `cscli scenarios remove crowdsec/xxx crowdsec/xyz`,
-		Args:              cobra.MinimumNArgs(1),
 		DisableAutoGenTag: true,
 		DisableAutoGenTag: true,
 		Run: func(cmd *cobra.Command, args []string) {
 		Run: func(cmd *cobra.Command, args []string) {
 			if all {
 			if all {
 				RemoveMany(cwhub.SCENARIOS, "")
 				RemoveMany(cwhub.SCENARIOS, "")
-			} else {
-				for _, name := range args {
-					RemoveMany(cwhub.SCENARIOS, name)
-				}
+				return
+			}
+
+			if len(args) == 0 {
+				log.Fatalf("Specify at least one scenario to remove or '--all' flag.")
+			}
+
+			for _, name := range args {
+				RemoveMany(cwhub.SCENARIOS, name)
 			}
 			}
 		},
 		},
 	}
 	}