diff --git a/cmd/tag.go b/cmd/tag.go index 3719804..29f0b54 100644 --- a/cmd/tag.go +++ b/cmd/tag.go @@ -18,6 +18,9 @@ func init() { RootCmd.AddCommand(tagCmd) tagCmd.Flags().BoolVarP(&list, "list", "l", false, "list tags in repositories with optional pattern") + tagCmd.Flags().BoolVarP(&del, "delete", "d", false, "delete tags in repositories") + + tagCmd.MarkFlagsMutuallyExclusive("list", "delete") } var tagCmd = &cobra.Command{ @@ -32,11 +35,6 @@ func tagFunc(cmd *cobra.Command, args []string) error { verbose := viper.GetBool("verbose") ctx := client.WithVerbose(context.Background(), verbose) - if !verbose { - uiprogress.Start() - defer uiprogress.Stop() - } - repoDirs, err := clt.GetDirs(ctx, dir) if err != nil { cmd.SilenceUsage = true @@ -55,6 +53,20 @@ func tagFunc(cmd *cobra.Command, args []string) error { return nil } + if del { + if len(args) == 0 { + cmd.SilenceUsage = true + return fmt.Errorf("tag name is required when deleting a tag") + } + + if !verbose { + uiprogress.Start() + defer uiprogress.Stop() + } + + args = append([]string{"--delete"}, args[0]) + } + err = clt.TagRepos(ctx, repoDirs, args...) if err != nil { cmd.SilenceUsage = true