summaryrefslogtreecommitdiff
path: root/lib/utils/paths.py
blob: 6eafbd773e4e3a1813a779d9f26ac5d30e834565 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# Authors: see git history
#
# Copyright (c) 2010 Authors
# Licensed under the GNU GPL version 3.0 or later.  See the file LICENSE for details.

import os
import sys
from os.path import dirname, realpath
from pathlib import Path

import platformdirs

if sys.version_info >= (3, 11):
    import tomllib  # built-in in Python 3.11+
else:
    import tomli as tomllib


def get_bundled_dir(name=None):
    if getattr(sys, 'frozen', None) is not None:
        if sys.platform == "darwin":
            path = os.path.join(sys._MEIPASS, "..", 'Resources')
        else:
            path = os.path.join(sys._MEIPASS, "..")
    else:
        path = os.path.join(dirname(realpath(__file__)), '..', '..')

    if name is not None:
        path = os.path.join(path, name)

    return realpath(path)


def get_resource_dir(name):
    if getattr(sys, 'frozen', None) is not None:
        if sys.platform == "darwin":
            return realpath(os.path.join(sys._MEIPASS, "..", 'Resources', name))
        else:
            return realpath(os.path.join(sys._MEIPASS, name))
    else:
        return realpath(os.path.join(dirname(realpath(__file__)), '..', '..', name))


def get_user_dir(name=None):
    path = platformdirs.user_config_dir("inkstitch")

    if name is not None:
        path = os.path.join(path, name)

    return path


def get_ini():
    debug_toml = Path(get_bundled_dir("DEBUG.toml"))
    if debug_toml.exists():
        with debug_toml.open("rb") as f:
            ini = tomllib.load(f)  # read DEBUG.toml file if exists, otherwise use default values in ini object
    else:
        ini = {}
    return ini