49 lines
1.5 KiB
Python

from os import path, getenv, mkdir
import sys
from platform import system
from pathlib import Path
def resource_path(relative_path: str) -> Path:
"""
Get absolute path to resource, works for dev and for PyInstaller bundle.
PyInstaller stores bundled files in _MEIPASS folder.
"""
try:
base_path = Path(sys._MEIPASS) # PyInstaller temp folder
except AttributeError:
base_path = Path(__file__).parent.parent.parent # Dev environment: source/ folder
return path.join(base_path, relative_path)
def get_data_dir() -> Path:
return resource_path("data")
def get_lang_path() -> Path:
return path.join(get_data_dir(), "lang")
def get_asset_path(asset: str) -> Path:
return path.join(get_data_dir(), "assets", f"{asset}.png")
def get_asset_svg_path(asset: str) -> Path:
return path.join(get_data_dir(), "assets", f"{asset}.svg")
def get_user_data_dir(app_name: str) -> Path:
home = Path.home()
os = system()
if os == "Windows":
appdata = getenv('APPDATA')
if appdata:
user_data_path = path.join(Path(appdata), app_name)
else:
user_data_path = path.join(home, "AppData", "Roaming", app_name)
elif os == "Darwin":
user_data_path = path.join(home, "Library", "Application Support", app_name)
else:
user_data_path = path.join(home, ".local", "share", app_name)
if not path.exists(user_data_path):
mkdir(user_data_path)
return user_data_path