Use subfolder for cache directory by default
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 3 Oct 2025 19:38:12 +0000 (21:38 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 3 Oct 2025 19:38:12 +0000 (21:38 +0200)
On HA add-on the /cache volume is not persisted otherwise!

Dockerfile
music_assistant/__main__.py

index f202432813738b1ebb4b10905162b3febeb33e25..210d1566b38e4e1d7b72a26be27df592014f39cf 100644 (file)
@@ -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"]
index 3fdd2d025ba28043b1ed655e59f5430210db838a..67a7db1af022cd39f41f543c7aaf9588e29b5afd 100644 (file)
@@ -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: