main.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import argparse
  2. from multiprocessing import freeze_support
  3. from gpustack.cmd import setup_start_cmd
  4. from gpustack.cmd.db_migration import setup_migrate_cmd
  5. from gpustack.cmd.download_tools import setup_download_tools_cmd
  6. from gpustack.cmd.images import setup_images_cmd
  7. from gpustack.cmd.reset_admin_password import setup_reset_admin_password_cmd
  8. from gpustack.cmd.version import setup_version_cmd
  9. from gpustack.cmd.reload_config import setup_reload_config_cmd
  10. from gpustack.cmd.prerun import setup_prerun_cmd
  11. def main():
  12. parser = argparse.ArgumentParser(
  13. description="GPUStack",
  14. conflict_handler="resolve",
  15. add_help=True,
  16. formatter_class=lambda prog: argparse.HelpFormatter(
  17. prog, max_help_position=55, indent_increment=2, width=200
  18. ),
  19. )
  20. subparsers = parser.add_subparsers(
  21. help="sub-command help",
  22. metavar='{start,reload-config,list-images,save-images,copy-images,load-images,reset-admin-password,version}',
  23. )
  24. setup_start_cmd(subparsers)
  25. setup_reload_config_cmd(subparsers)
  26. setup_download_tools_cmd(subparsers)
  27. setup_migrate_cmd(subparsers)
  28. setup_images_cmd(subparsers)
  29. setup_prerun_cmd(subparsers)
  30. setup_reset_admin_password_cmd(subparsers)
  31. setup_version_cmd(subparsers)
  32. args = parser.parse_args()
  33. if hasattr(args, "func"):
  34. if isinstance(args.func, type):
  35. args.func(args).run()
  36. else:
  37. args.func(args)
  38. else:
  39. parser.print_help()
  40. if __name__ == "__main__":
  41. # When using multiprocessing with 'spawn' mode, freeze_support() must be called in the main module
  42. # to ensure the main process environment is correctly initialized when child processes are spawned.
  43. # See: https://docs.python.org/3/library/multiprocessing.html#the-spawn-and-forkserver-start-methods
  44. freeze_support()
  45. main()