code: def main(args):
      types = {
          "script": (
              [
                  ".py",
                  ".cfg",
                  ".ini",
                  ".sh",
                  ".mk",
                  ".pyx",
                  ".cmake",
                  "CMakeLists.txt",
                  "Dockerfile",
                  ".pxd",
              ],
              "#",
          ),
          "c": (
              [".c", ".cpp", ".h", ".hpp", ".cu", ".cuh", ".proto"],
              "//",
          ),
          "bat": ([".bat"], "REM"),
      }
      checkers = {}
      for k, v in types.items():
          checkers[k] = Checker(*v)
  
      files = list_up_files(args.rootdir, checkers)
  
      for fn, c in tqdm(files):
          if c.type == "unknown":
              if not c.has_shebang():
                  continue
          new_header = c.create_file_header(fn)
          if new_header is None:
              continue
          with c.read_file(str(fn)) as f:
              if f:
                  old_header = c.extract_file_header()
                  if new_header == old_header:
                      continue
                  with open(str(fn), "w", encoding="utf-8") as fh:
                      fh.write(
                          c.replace_file_header(old_header, new_header)
                      )
  
imports: import argparse
  import os
  import pathlib
  import re
  import subprocess
  from tqdm import tqdm
  from contextlib import contextmanager
label_desc: Use image node_id 5 for calling a global function with example usage: main(args) without return types