_cli.py 2.2 KB

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