diff --git a/README.md b/README.md index 2056c0c..0acce61 100644 --- a/README.md +++ b/README.md @@ -7,14 +7,15 @@ CLI app for managing Copr repos, written in Go. ``` Options: - enable Add or enable one or more Copr repositories. - remove Remove one or more Copr repositories. - list List Copr repositories in your repo folder. - --enabled List all enabled repositories (default). - --disabled List all disabled repositories. - --all List both disabled and enabled repositories. - disable Disable one or more Copr repositories without deleting the repository files. - help Display help text. + enable Add or enable one or more Copr repositories + remove Remove one or more Copr repositories + --all Remove all installed Copr repositories + list List Copr repositories in your repo folder + --enabled List all enabled repositories (default) + --disabled List all disabled repositories + --all List both disabled and enabled repositories + disable Disable one or more Copr repositories without deleting the repository files + help Display help text Arguments: [REPO(s)...] One or more repository names formatted as `author/repo` diff --git a/cmd/remove.go b/cmd/remove.go index 9a6d119..5c25c62 100644 --- a/cmd/remove.go +++ b/cmd/remove.go @@ -12,14 +12,40 @@ import ( "github.com/trgeiger/cpm/internal/app" ) +var ( + deleteAll bool +) + func NewRemoveCmd(fs afero.Fs, out io.Writer) *cobra.Command { - return &cobra.Command{ + cmd := &cobra.Command{ Use: "remove", Aliases: []string{"delete"}, - Args: cobra.MinimumNArgs(1), - Short: "Uninstall one or more Copr repositories.", + Args: func(cmd *cobra.Command, args []string) error { + if deleteAll { + if err := cobra.NoArgs(cmd, args); err != nil { + return err + } + } else { + if err := cobra.MinimumNArgs(1)(cmd, args); err != nil { + return err + } + } + return nil + }, + Short: "Uninstall one or more Copr repositories.", Run: func(cmd *cobra.Command, args []string) { - for _, arg := range args { + var repos []string + if deleteAll { + erepos, _ := app.GetReposList(fs, out, app.Enabled) + drepos, _ := app.GetReposList(fs, out, app.Disabled) + erepos = append(erepos, drepos...) + for _, r := range erepos { + repos = append(repos, r.Name()) + } + } else { + repos = args + } + for _, arg := range repos { repo, err := app.NewCoprRepo(arg) if err != nil { fmt.Fprintln(out, err) @@ -32,4 +58,7 @@ func NewRemoveCmd(fs afero.Fs, out io.Writer) *cobra.Command { } }, } + cmd.Flags().BoolVarP(&deleteAll, "all", "A", false, "delete all installed Copr repositories") + + return cmd }