From 8db9980c7f669496aac1ec4ed00f15f9d7fd021e Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Fri, 3 Oct 2025 21:38:12 +0200 Subject: [PATCH] Use subfolder for cache directory by default On HA add-on the /cache volume is not persisted otherwise! --- Dockerfile | 4 ++-- music_assistant/__main__.py | 23 ++++++++++------------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/Dockerfile b/Dockerfile index f2024328..210d1566 100644 --- a/Dockerfile +++ b/Dockerfile @@ -68,9 +68,9 @@ LABEL \ io.hass.platform="${TARGETPLATFORM}" \ io.hass.type="addon" -VOLUME [ "/data", "/cache" ] +VOLUME [ "/data"] EXPOSE 8095 WORKDIR $VIRTUAL_ENV -ENTRYPOINT ["mass", "--data-dir", "/data", "--cache-dir", "/cache"] +ENTRYPOINT ["mass", "--data-dir", "/data"] diff --git a/music_assistant/__main__.py b/music_assistant/__main__.py index 3fdd2d02..67a7db1a 100644 --- a/music_assistant/__main__.py +++ b/music_assistant/__main__.py @@ -37,19 +37,15 @@ def get_arguments() -> argparse.Namespace: parser = argparse.ArgumentParser(description="MusicAssistant") # determine default data directory - if os.path.isdir(old_data_dir := os.path.join(os.path.expanduser("~"), ".musicassistant")): - # prefer (existing) legacy directory - default_data_dir = old_data_dir + if xdg_data_home := os.getenv("XDG_DATA_HOME"): + default_data_dir = os.path.join(xdg_data_home, "music-assistant") else: - default_data_dir = os.path.join( - os.getenv("XDG_DATA_HOME", os.path.join(os.path.expanduser("~"), ".local", "share")), - "music-assistant", - ) - - default_cache_dir = os.path.join( - os.getenv("XDG_CACHE_HOME", os.path.join(os.path.expanduser("~"), ".cache")), - "music-assistant", - ) + default_data_dir = os.path.join(os.path.expanduser("~"), ".musicassistant") + # determine default cache directory + if xdg_cache_home := os.getenv("XDG_CACHE_HOME"): + default_cache_dir = os.path.join(xdg_cache_home, "music-assistant") + else: + default_cache_dir = os.path.join(default_data_dir, ".cache") parser.add_argument( "--data-dir", @@ -207,9 +203,10 @@ def main() -> None: os.makedirs(data_dir, exist_ok=True) os.makedirs(cache_dir, exist_ok=True) - # TEMP: override options though hass config file + # Override options though hass add-on config file hass_options_file = os.path.join(data_dir, "options.json") if os.path.isfile(hass_options_file): + # we are running as a hass add-on with open(hass_options_file, "rb") as _file: hass_options = json_loads(_file.read()) else: -- 2.34.1