Blasta/blasta/__main__.py

67 lines
1.8 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
TODO
* Delete cookie if session does not match
* Delete entry/tag/jid combination row upon removal of a tag.
"""
import argparse
from blasta.config import Settings, Share
from blasta.http.instance import HttpInstance
from blasta.database.sqlite import DatabaseSQLite
import json
import logging
import os
from os.path import getsize, exists
import sys
import time
from typing import Optional
import urllib.parse
import uvicorn
import webbrowser
try:
import tomllib
except:
import tomli as tomllib
def main():
directory_config = Settings.get_directory()
sql_filename = os.path.join(directory_config, 'blasta.sql')
directory_data = Share.get_directory()
dbs_filename = os.path.join(directory_data, 'main.sqlite')
if not exists(dbs_filename) or not getsize(dbs_filename):
DatabaseSQLite.create_tables(sql_filename, dbs_filename)
accounts = {}
sessions = {}
http_instance = HttpInstance(accounts, sessions)
return http_instance.app
app = main()
if __name__ == 'blasta.__main__':
parser = argparse.ArgumentParser(
prog='blasta',
description='Blasta - A collaborative annotation system.',
usage='%(prog)s [OPTION]...')
parser.add_argument('-v', '--version', help='print version',
action='version', version='0.1')
parser.add_argument('-p', '--port', help='port number', dest='port')
parser.add_argument('-o', '--open', help='open an html browser', action='store_const', const=True, dest='open')
args = parser.parse_args()
port = int(args.port or 8000)
uvicorn.run(app, host='localhost', port=port)
if args.open:
# TODO Check first time
webbrowser.open('http://localhost:{}/help/about'.format(port))
webbrowser.open_new_tab('http://localhost:{}'.format(port))