archey4/archey/environment.py

36 lines
1.2 KiB
Python

"""
Simple class (acting as a singleton) dealing with environment variables.
Variables that should alter Archey _global_ behavior may be DRY-ed here.
"""
import os
import platform
from archey.singleton import Singleton
class Environment(metaclass=Singleton):
"""
At startup, instantiate this class and set up some attributes
according to their respective environment variable value.
"""
# See <https://no-color.org/>.
NO_COLOR = "NO_COLOR" in os.environ
# See <https://bixense.com/clicolors/>.
CLICOLOR = os.getenv("CLICOLOR") != "0"
CLICOLOR_FORCE = os.getenv("CLICOLOR_FORCE", "0") != "0"
# See <https://consoledonottrack.com/>.
DO_NOT_TRACK = os.getenv("DO_NOT_TRACK") == "1"
def __init__(self):
if platform.system() == "Darwin":
# Makes future `platform.mac_ver` calls not being _trolled_ by Darwin's kernel
# when opening `/System/Library/CoreServices/SystemVersion.plist` file.
# "Fortunately" for us, `platform` module does not cache these very results.
# See `platform._mac_ver_xml` function and
# <https://eclecticlight.co/2020/08/13/macos-version-numbering-isnt-so-simple/>.
os.environ["SYSTEM_VERSION_COMPAT"] = "0"