_cli.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import argparse
  2. import os
  3. import pathlib
  4. import yaml
  5. import tooncher
  6. def run(
  7. username,
  8. config_path,
  9. engine_path=None,
  10. validate_ssl_certs=True,
  11. cpu_limit_percent=None,
  12. ):
  13. if os.path.exists(config_path):
  14. with open(config_path) as config_file:
  15. config = yaml.safe_load(config_file.read())
  16. else:
  17. config = {}
  18. if engine_path is None:
  19. if "engine_path" in config:
  20. engine_path = config["engine_path"]
  21. else:
  22. raise Exception("missing path to toontown engine")
  23. accounts = config["accounts"] if "accounts" in config else []
  24. for account in accounts:
  25. if account["username"] == username:
  26. tooncher.launch(
  27. engine_path=pathlib.Path(engine_path),
  28. username=account["username"],
  29. password=account["password"],
  30. validate_ssl_certs=validate_ssl_certs,
  31. cpu_limit_percent=cpu_limit_percent,
  32. )
  33. def _init_argparser():
  34. argparser = argparse.ArgumentParser(description=None)
  35. argparser.add_argument("username")
  36. argparser.add_argument(
  37. "--config",
  38. "-c",
  39. metavar="path",
  40. dest="config_path",
  41. help="path to config file (default: %(default)s)",
  42. default=os.path.join(os.path.expanduser("~"), ".tooncher"),
  43. )
  44. argparser.add_argument(
  45. "--engine-path",
  46. "-e",
  47. metavar="path",
  48. dest="engine_path",
  49. default=tooncher.TOONTOWN_ENGINE_DEFAULT_PATH,
  50. help="\n".join(
  51. [
  52. "path to toontown engine.",
  53. "this overrides the one specified in config file",
  54. "(default: %(default)s)",
  55. ]
  56. ),
  57. )
  58. argparser.add_argument(
  59. "--no-ssl-cert-validation",
  60. "-k",
  61. dest="validate_ssl_certs",
  62. help="do not validate ssl certificates",
  63. action="store_false",
  64. )
  65. argparser.add_argument(
  66. "--cpu-limit",
  67. dest="cpu_limit_percent",
  68. type=int,
  69. default=None,
  70. help="maximally allowed cpu usage in percent"
  71. + " (requires cpulimit command, default: %(default)s)",
  72. )
  73. return argparser
  74. def main() -> None:
  75. argparser = _init_argparser()
  76. args = argparser.parse_args()
  77. run(**vars(args))