code: def main(graph, *args):
      
      migrations_dir = get_migrations_dir(graph)
  
      cli = CommandLine()
      options = cli.parser.parse_args(args if args else argv[1:])
      if not hasattr(options, "cmd"):
          cli.parser.error("too few arguments")
      if options.cmd[0].__name__ == "init":
          cli.parser.error("Alembic 'init' command should not be used in the microcosm!")
  
      with patch_script_directory(graph) as temporary_dir:
          config = make_alembic_config(temporary_dir, migrations_dir)
          cli.run_cmd(config, options)
docs: Entry point for invoking Alembic's `CommandLine`.
  
      Alembic's CLI defines its own argument parsing and command invocation; we want
      to use these directly but define configuration our own way. This function takes
      the behavior of `CommandLine.main()` and reinterprets it with our patching.
  
      :param graph: an initialized object graph
      :param migration_dir: the path to the migrations directory