MCPcopy Create free account
hub / github.com/diillson/chatcli / handleDelete

Function handleDelete

plugins-examples/chatcli-eks/main.go:617–708  ·  view source on GitHub ↗
(args []string)

Source from the content-addressed store, hash-verified

615}
616
617func handleDelete(args []string) {
618 deleteCmd := flag.NewFlagSet("delete", flag.ExitOnError)
619 stateBucketName := deleteCmd.String("state-bucket-name", "", "Bucket S3 do estado (deve ser o mesmo usado na criação).")
620 clusterName := deleteCmd.String("name", "", "Nome do cluster usado na criação (Ex: prod-eks). NÃO use o ID da AWS.")
621 awsRegion := deleteCmd.String("region", "us-east-1", "Região da AWS.")
622 refreshState := deleteCmd.Bool("refresh", true, "Validar estado real antes de destruir.")
623
624 secretsProvider := deleteCmd.String("secrets-provider", "awskms", "Provider de criptografia: 'passphrase' ou 'awskms'.")
625 kmsKeyID := deleteCmd.String("kms-key-id", "", "ID da chave KMS (se usar awskms).")
626 configPassphrase := deleteCmd.String("config-passphrase", "", "Passphrase (se usar passphrase).")
627
628 deleteCmd.Parse(args)
629
630 if *secretsProvider == "awskms" {
631 if *kmsKeyID == "" {
632 fmt.Fprintln(os.Stderr, "❌ ERRO: Você precisa informar --kms-key-id no delete")
633 os.Exit(1)
634 }
635 os.Setenv("PULUMI_CONFIG_PASSPHRASE", *kmsKeyID)
636 }
637
638 if *secretsProvider == "passphrase" {
639 finalPassphrase := *configPassphrase
640 if finalPassphrase == "" {
641 finalPassphrase = os.Getenv("PULUMI_CONFIG_PASSPHRASE")
642 }
643 if finalPassphrase == "" {
644 fmt.Fprintln(os.Stderr, "❌ ERRO: Passphrase necessária para deletar")
645 os.Exit(1)
646 }
647 os.Setenv("PULUMI_CONFIG_PASSPHRASE", finalPassphrase)
648 }
649
650 if *clusterName == "" {
651 fmt.Fprintln(os.Stderr, "❌ Erro: O flag --name é obrigatório.")
652 fmt.Fprintln(os.Stderr, " Use o mesmo nome que você definiu ao criar o cluster.")
653 deleteCmd.Usage()
654 os.Exit(1)
655 }
656
657 var backendURL string
658 if *stateBucketName != "" {
659 // Se S3 foi usado na criação, monte a URL com lock Dynamo
660 backendURL = fmt.Sprintf("s3://%s?region=%s", *stateBucketName, *awsRegion)
661 fmt.Fprintln(os.Stderr, "🧹 Usando backend S3:", backendURL)
662 } else {
663 // Tente usar o backend do 'pulumi login'; se não houver, caia para local
664 current, hasToken := getCurrentPulumiBackend()
665 switch {
666 case current == "":
667 home, _ := os.UserHomeDir()
668 localDir := filepath.Join(home, ".chatcli", "pulumi", *clusterName)
669 _ = os.MkdirAll(localDir, 0755)
670 backendURL = "file://" + localDir
671 fmt.Fprintln(os.Stderr, "🧹 Backend local (file) [fallback]:", backendURL)
672
673 case strings.HasPrefix(current, "http://") || strings.HasPrefix(current, "https://"):
674 if hasToken {

Callers 1

mainFunction · 0.70

Calls 4

DestroyEKSFunction · 0.92
getCurrentPulumiBackendFunction · 0.85
UsageMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected