-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathautostew_back.py
More file actions
executable file
·67 lines (52 loc) · 2.26 KB
/
autostew_back.py
File metadata and controls
executable file
·67 lines (52 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/python3
import argparse
import importlib
import logging
import sys
import traceback
import requests
from unittest import mock
from django.core.wsgi import get_wsgi_application
from autostew_back import settings
get_wsgi_application()
from autostew_back.ds_api.mocked_api import ApiReplay
from autostew_web_session.models.server import Server
description = """Autostew - A stuff doer for the Project Cars dedicated server"""
epilog = """Don't use --env-init on productive servers!"""
def main(server_id: int, api_record, api_replay_dir, api_replay_manual: bool, event_offset: int):
logging.info("Starting autostew")
server = Server.objects.get(id=server_id)
try:
if api_replay_dir:
logging.warning("Mocking gameserver API with {}".format(api_replay_dir))
api = ApiReplay(api_replay_dir)
settings.event_poll_period = 0
settings.full_update_period = 0
with mock.patch.object(requests, 'get', api.fake_request):
server.back_start(settings, api_record=api_record)
server.back_poll_loop()
else:
server.back_start(settings, api_record=api_record)
server.back_poll_loop()
except KeyboardInterrupt as e:
traceback.print_tb(e.__traceback__)
except ApiReplay.RecordFinished:
logging.info("API record ended")
server.back_destroy()
logging.info("Autostew finished properly")
return 0
if __name__ == "__main__":
parser = argparse.ArgumentParser(description=description, epilog=epilog)
parser.add_argument('--sid', '-i', required=True, help="Server ID")
parser.add_argument('--api-record', nargs='?', const=True, default=False,
help="Record API calls")
parser.add_argument('--api-replay', default=False,
help="Replay API calls from this directory")
parser.add_argument('--api-replay-manual', default=False, action='store_true',
help="On API replay, require keypress for each loop")
parser.add_argument('--event-offset',
help="Set initial event offset")
args = parser.parse_args()
sys.exit(
main(args.sid, args.api_record, args.api_replay, args.api_replay_manual, args.event_offset)
)