def METHOD_NAME():
  logging.getLogger().setLevel(logging.INFO)
  # Parse command-line arguments
  args = parse_cmdline_args()
  output_dir = os.path.expanduser(args.output_dir)
  if not os.path.exists(output_dir):
    os.makedirs(output_dir)
  # Detect changed modules based on changed files
  changed_api_files = get_api_files(args.file_list)
  if not changed_api_files:
    logging.info('No Changed API File Detected')
    exit(0)
  changed_modules = icore_module.detect_changed_modules(changed_api_files)
  if not changed_modules:
    logging.info('No Changed Module Detected')
    exit(0)
  # Generate API documentation and parse API declarations
  # for each changed module
  api_container = {}
  for _, module in changed_modules.items():
    api_doc_dir = os.path.join(output_dir, 'doc', module['name'])
    build_api_doc(module, api_doc_dir)
    if os.path.exists(api_doc_dir):
      module_api_container = parse_module(api_doc_dir)
      api_container[module['name']] = {
          'path': api_doc_dir,
          'api_types': module_api_container
      }
    else:  # api doc fail to build.
      api_container[module['name']] = {'path': '', 'api_types': {}}
  api_info_path = os.path.join(output_dir, API_INFO_FILE_NAME)
  logging.info(f'Writing API data to {api_info_path}')
  with open(api_info_path, 'w') as f:
    f.write(json.dumps(api_container, indent=2))