This repository has been archived on 2023-02-02. You can view files and clone it, but cannot push or open issues or pull requests.
barkshark-web/barkshark_web/config.py
2022-04-16 06:23:04 -04:00

108 lines
2.4 KiB
Python

import json, sys
from os import environ
from izzylib import izzylog
from izzylib_http_async import Template
from urllib.parse import quote
from . import __software__, __version__
default_config_dir = Path(GLib.get_user_config_dir()).join('barkshark/web')
# Setup some often-used variables
scriptpath = Path(__file__).parent
datapath = Path(environ.get('CONFIG', default_config_dir))
proxy_resolver = Gio.ProxyResolver.get_default()
proxies = proxy_resolver.lookup('https://www.barkshark.xyz', None)[0]
for arg in sys.argv:
if arg.startswith('--profile'):
profilepath = datapath.join(arg.split('=', 1)[1])
else:
profilepath = datapath.join('DEFAULT')
if 'direct://' in proxies or proxies == None:
proxy = None
else:
url = Url(proxies[0])
proxy = DotDict(
scheme = url.proto,
host = url.domain,
port = url.port
)
dirs = DotDict(
script = scriptpath,
data = datapath,
profile = profilepath,
themes = profilepath.join('themes'),
localweb = scriptpath.join('localweb'),
resources = scriptpath.join('resources'),
storage = profilepath.join('storage'),
backup = profilepath.join('backup'),
cache = profilepath.join('cache'),
favicon = profilepath.join('storage/favicon'),
avatars = profilepath.join('cache/avatar'),
emojis = profilepath.join('cache/emoji'),
extensions = profilepath.join('extensions'),
userscripts = profilepath.join('userscripts'),
downloads = Path('~/Downloads')
)
files = DotDict(
database = dirs.profile.join('database.sqlite3'),
cookies = dirs.profile.join('cookies.sqlite3')
)
var = DotDict(
loglevel = environ.get('LOG_LEVEL', 'INFO').upper(),
local_proto = 'pyweb',
dbversion = 20210905,
template = Template(
autoescape = False,
search = [
dirs.localweb,
dirs.resources
]
),
proxy = proxy
)
var.local = var.local_proto + '://'
var.template.update_env({
'len': len,
'str': str,
'dirs': dirs,
'files': files,
'var': var,
'version': __version__,
'swname': __software__,
'quote': quote
})
logging.set_config('level', var.loglevel)
sys.path.insert(-1, dirs.extensions)
if dirs.data.join('database.sqlite3').exists():
dirs.profile.mkdir()
for item in dirs.data.listdir(recursive=False):
if item.name != 'DEFAULT':
item.move(dirs.profile.join(item.name))
## create necessary data dirs
for name, directory in dirs.items():
if not directory:
logging.debug('missing dir:', name)
continue
if not directory.exists():
directory.mkdir()