|  |  |  | @ -17,15 +17,8 @@ limitations under the License. | 
		
	
		
			
				|  |  |  |  | package main | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | import ( | 
		
	
		
			
				|  |  |  |  | 	"context" | 
		
	
		
			
				|  |  |  |  | 	"fmt" | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 	"github.com/manifoldco/promptui" | 
		
	
		
			
				|  |  |  |  | 	"github.com/spf13/cobra" | 
		
	
		
			
				|  |  |  |  | 	"k8s.io/apimachinery/pkg/types" | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 	"github.com/fluxcd/flux2/internal/utils" | 
		
	
		
			
				|  |  |  |  | 	helmv2 "github.com/fluxcd/helm-controller/api/v2beta1" | 
		
	
		
			
				|  |  |  |  | 	"github.com/spf13/cobra" | 
		
	
		
			
				|  |  |  |  | ) | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | var deleteHelmReleaseCmd = &cobra.Command{ | 
		
	
	
		
			
				
					|  |  |  | @ -36,57 +29,12 @@ var deleteHelmReleaseCmd = &cobra.Command{ | 
		
	
		
			
				|  |  |  |  | 	Example: `  # Delete a Helm release and the Kubernetes resources created by it | 
		
	
		
			
				|  |  |  |  |   flux delete hr podinfo | 
		
	
		
			
				|  |  |  |  | `, | 
		
	
		
			
				|  |  |  |  | 	RunE: deleteHelmReleaseCmdRun, | 
		
	
		
			
				|  |  |  |  | 	RunE: deleteCommand{ | 
		
	
		
			
				|  |  |  |  | 		apiType: helmReleaseType, | 
		
	
		
			
				|  |  |  |  | 		object:  universalAdapter{&helmv2.HelmRelease{}}, | 
		
	
		
			
				|  |  |  |  | 	}.run, | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | func init() { | 
		
	
		
			
				|  |  |  |  | 	deleteCmd.AddCommand(deleteHelmReleaseCmd) | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | func deleteHelmReleaseCmdRun(cmd *cobra.Command, args []string) error { | 
		
	
		
			
				|  |  |  |  | 	if len(args) < 1 { | 
		
	
		
			
				|  |  |  |  | 		return fmt.Errorf("release name is required") | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  | 	name := args[0] | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 	ctx, cancel := context.WithTimeout(context.Background(), rootArgs.timeout) | 
		
	
		
			
				|  |  |  |  | 	defer cancel() | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 	kubeClient, err := utils.KubeClient(rootArgs.kubeconfig, rootArgs.kubecontext) | 
		
	
		
			
				|  |  |  |  | 	if err != nil { | 
		
	
		
			
				|  |  |  |  | 		return err | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 	namespacedName := types.NamespacedName{ | 
		
	
		
			
				|  |  |  |  | 		Namespace: rootArgs.namespace, | 
		
	
		
			
				|  |  |  |  | 		Name:      name, | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 	var helmRelease helmv2.HelmRelease | 
		
	
		
			
				|  |  |  |  | 	err = kubeClient.Get(ctx, namespacedName, &helmRelease) | 
		
	
		
			
				|  |  |  |  | 	if err != nil { | 
		
	
		
			
				|  |  |  |  | 		return err | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 	if !deleteArgs.silent { | 
		
	
		
			
				|  |  |  |  | 		if !helmRelease.Spec.Suspend { | 
		
	
		
			
				|  |  |  |  | 			logger.Waitingf("This action will remove the Kubernetes objects previously applied by the %s Helm release!", name) | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		prompt := promptui.Prompt{ | 
		
	
		
			
				|  |  |  |  | 			Label:     "Are you sure you want to delete this Helm release", | 
		
	
		
			
				|  |  |  |  | 			IsConfirm: true, | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 		if _, err := prompt.Run(); err != nil { | 
		
	
		
			
				|  |  |  |  | 			return fmt.Errorf("aborting") | 
		
	
		
			
				|  |  |  |  | 		} | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 	logger.Actionf("deleting release %s in %s namespace", name, rootArgs.namespace) | 
		
	
		
			
				|  |  |  |  | 	err = kubeClient.Delete(ctx, &helmRelease) | 
		
	
		
			
				|  |  |  |  | 	if err != nil { | 
		
	
		
			
				|  |  |  |  | 		return err | 
		
	
		
			
				|  |  |  |  | 	} | 
		
	
		
			
				|  |  |  |  | 	logger.Successf("release deleted") | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 	return nil | 
		
	
		
			
				|  |  |  |  | } | 
		
	
	
		
			
				
					|  |  |  | 
 |