code: def main():
      """
      UMA Command Line Interface (CLI)
      """
      args = _parse_args()
      add_hw_name = args.add_hardware
      uma_template_path = pathlib.Path(
          os.getcwd(), "_template"
      ).absolute()
  
      add_hw_path = os.path.join(uma_template_path.parent, add_hw_name)
      if os.path.exists(add_hw_path):
          print(
              f"Hardware with name {add_hw_name} already exists in UMA file structure: {add_hw_path}"
          )
          sys.exit(-1)
      else:
          os.mkdir(add_hw_path)
  
      uma_files = [
          "backend.py",
          "codegen.py",
          "passes.py",
          "patterns.py",
          "run.py",
          "strategies.py",
      ]
      if args.tutorial == "vanilla":
          uma_files.append("conv2dnchw.cc")
  
      source_files = [
          os.path.join(uma_template_path, f) for f in uma_files
      ]
      destination_files = [
          os.path.join(add_hw_path, f) for f in uma_files
      ]
  
      for src, dst in zip(source_files, destination_files):
          shutil.copyfile(src, dst)
  
      template_name = "my_ai_hw"
      replace_template_name(
          destination_files, template_name, add_hw_name
      )
  
      print(f"Success: added {add_hw_name} to {add_hw_path}")
  
file_path: tvm/apps/uma/uma_cli.py
imports: import argparse
  import os
  import shutil
  import sys
  import pathlib
  from inflection import camelize, underscore
label_desc: Use image node_id 3 for calling a global function with example usage: main() without return types