%PDF- %PDF-
| Direktori : /usr/share/ibus-table/engine/ |
| Current File : //usr/share/ibus-table/engine/ibus_table_location.py |
# vim:et sts=4 sw=4 -*- coding: utf-8 -*-
#
# ibus-table - The Tables engine for IBus
#
# Copyright (c) 2015-2018 Mike FABIAN <mfabian@redhat.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
'''
Get locations where ibus-table stores stuff.
The directories used are according to the
“XDG Base Directory Specification”,
see: http://standards.freedesktop.org/basedir-spec/latest/index.html
'''
from typing import Dict
import os
IBUS_TABLE_LOCATION: Dict[str, str] = {
'data': '',
'lib': '',
'data_home': '',
'cache_home': '',
}
def data() -> str:
return IBUS_TABLE_LOCATION['data']
def lib() -> str:
return IBUS_TABLE_LOCATION['lib']
def data_home() -> str:
return IBUS_TABLE_LOCATION['data_home']
def cache_home() -> str:
return IBUS_TABLE_LOCATION['cache_home']
def _init() -> None:
if os.getenv('IBUS_TABLE_LOCATION'):
IBUS_TABLE_LOCATION['data'] = str(os.getenv('IBUS_TABLE_LOCATION'))
if (not IBUS_TABLE_LOCATION['data']
or not os.path.exists(IBUS_TABLE_LOCATION['data'])):
IBUS_TABLE_LOCATION['data'] = "/usr/share/ibus-table/"
if os.getenv('IBUS_TABLE_LIB_LOCATION'):
IBUS_TABLE_LOCATION['lib'] = str(os.getenv('IBUS_TABLE_LIB_LOCATION'))
if (not IBUS_TABLE_LOCATION['lib']
or not os.path.exists(IBUS_TABLE_LOCATION['lib'])):
IBUS_TABLE_LOCATION['lib'] = "/usr/libexec"
# $XDG_DATA_HOME defines the base directory relative to which user
# specific data files should be stored. If $XDG_DATA_HOME is either
# not set or empty, a default equal to $HOME/.local/share should be
# used.
if os.getenv('IBUS_TABLE_DATA_HOME'):
IBUS_TABLE_LOCATION['data_home'] = str(
os.getenv('IBUS_TABLE_DATA_HOME'))
if (not IBUS_TABLE_LOCATION['data_home']
or not os.path.exists(IBUS_TABLE_LOCATION['data_home'])):
if os.getenv('XDG_DATA_HOME'):
IBUS_TABLE_LOCATION['data_home'] = str(os.getenv('XDG_DATA_HOME'))
if (not IBUS_TABLE_LOCATION['data_home']
or not os.path.exists(IBUS_TABLE_LOCATION['data_home'])):
IBUS_TABLE_LOCATION['data_home'] = os.path.expanduser('~/.local/share')
IBUS_TABLE_LOCATION['data_home'] = os.path.join(
IBUS_TABLE_LOCATION['data_home'], 'ibus-table')
if not os.access(IBUS_TABLE_LOCATION['data_home'], os.F_OK):
os.makedirs(IBUS_TABLE_LOCATION['data_home'], exist_ok=True)
# $XDG_CACHE_HOME defines the base directory relative to which user
# specific non-essential data files should be stored. If
# $XDG_CACHE_HOME is either not set or empty, a default equal to
# $HOME/.cache should be used.
if os.getenv('IBUS_TABLE_CACHE_HOME'):
IBUS_TABLE_LOCATION['cache_home'] = str(
os.getenv('IBUS_TABLE_CACHE_HOME'))
if (not IBUS_TABLE_LOCATION['cache_home']
or not os.path.exists(IBUS_TABLE_LOCATION['cache_home'])):
if os.getenv('XDG_CACHE_HOME'):
IBUS_TABLE_LOCATION['cache_home'] = str(
os.getenv('XDG_CACHE_HOME'))
if (not IBUS_TABLE_LOCATION['cache_home']
or not os.path.exists(IBUS_TABLE_LOCATION['cache_home'])):
IBUS_TABLE_LOCATION['cache_home'] = os.path.expanduser('~/.cache')
IBUS_TABLE_LOCATION['cache_home'] = os.path.join(
IBUS_TABLE_LOCATION['cache_home'], 'ibus-table')
if not os.access(IBUS_TABLE_LOCATION['cache_home'], os.F_OK):
os.makedirs(IBUS_TABLE_LOCATION['cache_home'], exist_ok=True)
class __ModuleInitializer:
def __init__(self) -> None:
_init()
def __del__(self) -> None:
return
__module_init = __ModuleInitializer()