code: def make_parser():
      
  
      parser = argparse.ArgumentParser(description='BERNARD CLI utility')
      sp = parser.add_subparsers(help='Sub-command')
  
      parser_run = sp.add_parser('run', help='Run the BERNARD server')
      parser_run.set_defaults(action='run')
  
      parser_sheet = sp.add_parser('sheet', help='Import files from Google '
                                                 'Sheets')
      parser_sheet.set_defaults(action='sheet')
      parser_sheet.add_argument(
          '--auth_host_name',
          default='localhost',
          help='Hostname when running a local web server.'
      )
      parser_sheet.add_argument(
          '--noauth_local_webserver',
          action='store_true',
          default=False,
          help='Do not run a local web server.'
      )
      parser_sheet.add_argument(
          '--auth_host_port',
          default=[8080, 8090],
          type=int,
          nargs='*',
          help='Port web server should listen on.'
      )
      parser_sheet.add_argument(
          '--logging_level',
          default='ERROR',
          choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'],
          help='Set the logging level of detail.'
      )
  
      parser_sp = sp.add_parser('start_project', help='Starts a project')
      parser_sp.set_defaults(action='start_project')
      parser_sp.add_argument(
          'project_name',
          help='A snake-case name for your project'
      )
      parser_sp.add_argument(
          'dir',
          help='Directory to store the project'
      )
  
      return parser
docs: Generate the parser for all sub-commands