X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=run.py;h=c69dc6ab061c522c75ee2d1420df0fdc44a2f1e1;hb=e06d3b744f88b2976399b0cbe08b526bb7e88907;hp=644fc4abbf5aa7fcc1e7cd410d931e0f1af8798f;hpb=b557c789f4eec704db0e6276390395fac5d8db9e;p=plomtask
diff --git a/run.py b/run.py
index 644fc4a..c69dc6a 100755
--- a/run.py
+++ b/run.py
@@ -1,15 +1,38 @@
#!/usr/bin/env python3
"""Call this to start the application."""
from sys import exit as sys_exit
-from plomtask.misc import HandledException
+from os import environ
+from plomtask.exceptions import HandledException, NotFoundException
from plomtask.http import TaskHandler, TaskServer
+from plomtask.db import DatabaseFile, UnmigratedDbException
+PLOMTASK_DB_PATH = environ.get('PLOMTASK_DB_PATH')
HTTP_PORT = 8082
+DB_CREATION_ASK = 'Database file not found. Create? Y/n\n'
+DB_MIGRATE_ASK = 'Database file needs migration. Migrate? Y/n\n'
+
+
+def yes_or_fail(question: str, fail_msg: str) -> None:
+ """Ask question, raise HandledException(fail_msg) if reply not yes."""
+ reply = input(question)
+ if not reply.lower() in {'y', 'yes', 'yes.', 'yes!'}:
+ print('Not recognizing reply as "yes".')
+ raise HandledException(fail_msg)
if __name__ == '__main__':
try:
- server = TaskServer(('localhost', HTTP_PORT), TaskHandler)
+ if not PLOMTASK_DB_PATH:
+ raise HandledException('PLOMTASK_DB_PATH not set.')
+ try:
+ db_file = DatabaseFile(PLOMTASK_DB_PATH)
+ except NotFoundException:
+ yes_or_fail(DB_CREATION_ASK, 'Cannot run without DB.')
+ db_file = DatabaseFile.create_at(PLOMTASK_DB_PATH)
+ except UnmigratedDbException:
+ yes_or_fail(DB_MIGRATE_ASK, 'Cannot run with unmigrated DB.')
+ db_file = DatabaseFile.migrate(PLOMTASK_DB_PATH)
+ server = TaskServer(db_file, ('localhost', HTTP_PORT), TaskHandler)
print(f'running at port {HTTP_PORT}')
try:
server.serve_forever()
@@ -17,5 +40,5 @@ if __name__ == '__main__':
print('aborting due to keyboard interrupt')
server.server_close()
except HandledException as e:
- print(f'Aborting due to: {e}')
+ print(f'Aborting because: {e}')
sys_exit(1)