home · contact · privacy
Server/py: Replace tokenizer() with shlex.split() (erlehmann advice).
[plomrogue] / plomrogue-server.py
index 9bb1559ab0c4462f3125e557691f8153a6f91299..9bdab821360dd4262d1de20a9f817e197eb6c8dd 100755 (executable)
@@ -1,15 +1,10 @@
 import argparse
 import errno
 import os
+import shlex
 import time
 
 
-class HandledException(Exception):
-    """Feature-less Exception child. Use for expected operational errors."""
-
-    pass
-
-
 def setup_server_io(io_db):
     """Fill IO files DB with proper file( path)s. Write process IO test string.
 
@@ -52,12 +47,13 @@ def detect_atomic_leftover(path):
           "aborted previous attempt to write '" + path + "'. Aborting until " \
           "the matter is resolved by removing it from its current path."
     if os.access(path_tmp, os.F_OK):
-        raise HandledException(msg)
+        raise SystemExit(msg)
 
 
 def obey(msg):
     """"""
     print("Input: " + msg)
+    print(shlex.split(msg))
 
 
 io_db = {}
@@ -65,27 +61,27 @@ try:
     parser = argparse.ArgumentParser()
     parser.add_argument('-s', nargs='?', type=int, dest='replay', const=1,
                         action='store')
-    args, unknown = parser.parse_known_args()
-    replay = args.replay
-    # print("DUMMY: Obey command-line arguments.")
+    opts, unknown = parser.parse_known_args()
     setup_server_io(io_db)
     # print("DUMMY: Run game.")
     path_recordfile = "recordfile"
     path_savefile = "savefile"
     detect_atomic_leftover(path_savefile)
     detect_atomic_leftover(path_recordfile)
-    if replay:
-        print("Replaying")
+    if None != opts.replay:
+        if opts.replay < 1:
+            opts.replay = 1
+        print("Replay mode. Auto-replaying up to turn " + str(opts.replay) +
+              " (if so late a turn is to be found).")
+        if not os.access(path_recordfile, os.F_OK):
+            raise SystemExit("No record file found to replay.")
     elif os.access(path_savefile, os.F_OK):
         print(open(path_savefile, "r").read())
     else:
         msg = "MAKE_WORLD " + str(int(time.time()))
         obey(msg)
-except SystemExit:
-    pass
-except HandledException as exception:
-    print("Error:")
-    print(exception.args[0])
+except SystemExit as exit:
+    print("ABORTING: " + exit.args[0])
 except:
     print("SOMETHING WENT WRONG IN UNEXPECTED WAYS")
     raise