code: def main():
      parser = argparse.ArgumentParser(
          description="Download datasets and generate task configs"
      )
      subparsers = parser.add_subparsers()
      sp_list = subparsers.add_parser(
          "list", help="list supported tasks in downloader"
      )
      sp_download = subparsers.add_parser(
          "download", help="download data command"
      )
      sp_download.add_argument(
          "--output_path",
          required=True,
          help="base output path for downloaded data and task configs",
      )
      sp_download_group = sp_download.add_mutually_exclusive_group(
          required=True
      )
      sp_download_group.add_argument(
          "--tasks", nargs="+", help="list of tasks to download"
      )
      sp_download_group.add_argument("--benchmark", choices=BENCHMARKS)
  
      # Hook subparsers up to functions
      sp_list.set_defaults(func=list_supported_tasks_cli)
      sp_download.set_defaults(func=download_data_cli)
  
      args = parser.parse_args()
      args.func(args)
  
file_path: jiant/jiant/scripts/download_data/runscript.py
imports: import os
  import argparse
  import jiant.utils.python.io
  import jiant.scripts.download_data.dl_datasets.hf_datasets_tasks
  import jiant.scripts.download_data.dl_datasets.xtreme
  import jiant.scripts.download_data.dl_datasets.files_tasks
  from jiant.tasks.constants import GLUE_TASKS, SUPERGLUE_TASKS, XTREME_TASKS, BENCHMARKS
  from jiant.scripts.download_data.constants import SQUAD_TASKS, DIRECT_DOWNLOAD_TASKS, OTHER_HF_DATASETS_TASKS
label_desc: Use image node_id 4 for calling a global function with example usage: main() without return types