docs: def main():
      """Run along little fella."""
      parser = ArgumentParser()
      subs = parser.add_subparsers(dest='cmd')
      setup_parser = subs.add_parser('setup')
      setup_parser.add_argument('-r', '--region', default=PRIMARY_REGION,
                                help='AWS region to install all services')
      setup_parser.add_argument('-d', '--debug', action='store_true',
                                help='Run in debug mode')
      setup_parser.add_argument('--rollback', action='store_true',
                                help='Rollback configuration on failure')
      setup_parser.add_argument('--skip-node-setup', action='store_true',
                                help='Rollback configuration on failure')
      setup_parser = subs.add_parser('teardown')
      setup_parser.add_argument('-r', '--region', default=PRIMARY_REGION,
                                help='AWS region to delete all services')
      setup_parser.add_argument('-d', '--debug', action='store_true',
                                help='Run in debug mode')
      args = parser.parse_args()
  
      if args.region:
          if args.region not in SUPPORTED_REGIONS:
              raise Exception("INVALID_REGION: Region must be one of: %s"
                              % (', '.join(SUPPORTED_REGIONS)))
          global PRIMARY_REGION
          PRIMARY_REGION = args.region
  
      if args.debug:
          logger.setLevel(logging.DEBUG)
  
      if args.cmd == 'setup':
          try:
              generate_handler()
              time.sleep(7)
              generate_s3_bucket()
              generate_dynamodb_tables()
              generate_lambda_functions()
              generate_api_gateway()
              generate_admin_resource()
              api_node = generate_api_resources()
          except Exception as e:
              logger.error(str(e))
              if args.rollback:
                  logger.info("[!] Rolling back deployed services")
                  remove_s3_bucket()
                  remove_dynamodb_tables()
                  remove_lambda_functions()
                  remove_api_gateway()
                  remove_handler()
  
          if not args.skip_node_setup:
              email = input("[*] Blockade admin email: ")
              if email.find('@') < 0:
                  logger.error("[!] %s does not appear to be an email" % email)
                  email = input("[*] Blockade admin email: ")
              name = input("[*] Blockade admin name: ")
  
              url = api_node + "admin/add-user"
              params = {'user_email': email, 'user_name': name,
                        'user_role': 'admin'}
              headers = {'Content-Type': 'application/json'}
              response = requests.post(url, data=json.dumps(params),
                                       headers=headers)
              loaded = json.loads(response.content)
              logger.info("[#] Successfully added Blockade admin")
              logger.debug(loaded)
              print("---------------------------------------------------------------------------")
              print("Blockade Server: %s" % api_node)
              print("Blockade Admin: %s" % loaded['email'])
              print("Blockade API Key: %s" % loaded['api_key'])
              print("---------------------------------------------------------------------------")
              print("Quick Config: blockade-cfg setup %s %s --api-node=%s"
                    % (loaded['email'], loaded['api_key'], api_node))
              print("Next steps: Add indicators to your node with our analyst toolbench: %s" % (ANALYST_TOOLBENCH))
              print("For more documentation on other cloud node actions, see %s." % (CLOUD_NODE_DOCS))
  
      if args.cmd == 'teardown':
          remove_s3_bucket()
          remove_dynamodb_tables()
          remove_lambda_functions()
          remove_api_gateway()
          remove_handler()