tooncher 2.4 KB

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