docstr: Use Terraform to destroy any existing infrastructure
  
  Args:
      options (argparse.Namespace): Parsed arguments from manage.py
      config (CLIConfig): Loaded StreamAlert config
  
  Returns:
      bool: False if errors occurred, True otherwise
docstr_tok: ["Use","Terraform","to","destroy","any","existing","infrastructure","Args",":","options","(","argparse.Namespace",")",":","Parsed","arguments","from","manage.py","config","(","CLIConfig",")",":","Loaded","StreamAlert","config","Returns",":","bool",":","False","if","errors","occurred",",","True","otherwise"]
code: def handler(cls, options, config):
      """Use Terraform to destroy any existing infrastructure
  
      Args:
          options (argparse.Namespace): Parsed arguments from manage.py
          config (CLIConfig): Loaded StreamAlert config
  
      Returns:
          bool: False if errors occurred, True otherwise
      """
      # Check for valid credentials
      if not check_credentials():
          return False
  
      # Verify terraform is installed
      if not terraform_check():
          return False
  
      # Ask for approval here since multiple Terraform commands may be necessary
      if not continue_prompt(
          message="Are you sure you want to destroy?"
      ):
          return False
  
      if options.target:
          target_modules, valid = _get_valid_tf_targets(
              config, options.target
          )
          if not valid:
              return False
  
          return terraform_runner(
              config,
              destroy=True,
              auto_approve=True,
              targets=target_modules if target_modules else None,
          )
  
      # Migrate back to local state so Terraform can successfully
      # destroy the S3 bucket used by the backend.
      # Do not check for terraform or aws creds again since these were checked above
      if not terraform_generate_handler(
          config=config, init=True, check_tf=False, check_creds=False
      ):
          return False
  
      if not run_command(
          ["terraform", "init"], cwd=config.build_directory
      ):
          return False
  
      # Destroy all of the infrastructure
      return terraform_runner(config, destroy=True, auto_approve=True)
  
imports: from fnmatch import fnmatch
  import json
  import os
  from streamalert.shared.config import firehose_alerts_bucket
  from streamalert.shared.logger import get_logger
  from streamalert.shared.utils import get_data_file_format
  from streamalert_cli.athena.handler import create_table, create_log_tables
  from streamalert_cli.helpers import check_credentials, continue_prompt, run_command
  from streamalert_cli.manage_lambda.deploy import deploy
  from streamalert_cli.terraform.generate import terraform_generate_handler
  from streamalert_cli.terraform.helpers import terraform_check, terraform_runner
  from streamalert_cli.utils import add_clusters_arg, CLICommand, set_parser_epilog, UniqueSortedListAction
label_desc: Use image node_id 2 for calling the TerraformDestroyCommand obj's underlying member method code with example usage: obj.handler(cls, options, config) and returns: terraform_runner, False, False, False, terraform_runner, False, False, False