Addon Manager: PythonDeps Cleanup and Testing

This commit is contained in:
Chris Hennes
2024-12-08 22:32:45 -06:00
committed by Yorik van Havre
parent 6254cb910b
commit b2619f339c
8 changed files with 323 additions and 139 deletions

View File

@@ -143,6 +143,7 @@ class DataPaths:
all paths are temp directories. If not run within FreeCAD, all directories are
deleted when the last reference to this class is deleted."""
data_dir = None
mod_dir = None
macro_dir = None
cache_dir = None
@@ -152,6 +153,8 @@ class DataPaths:
def __init__(self):
if FreeCAD:
if self.data_dir is None:
self.data_dir = getUserAppDataDir()
if self.mod_dir is None:
self.mod_dir = os.path.join(getUserAppDataDir(), "Mod")
if self.cache_dir is None:
@@ -162,6 +165,8 @@ class DataPaths:
self.home_dir = FreeCAD.getHomePath()
else:
self.reference_count += 1
if self.data_dir is None:
self.data_dir = tempfile.mkdtemp()
if self.mod_dir is None:
self.mod_dir = tempfile.mkdtemp()
if self.cache_dir is None:
@@ -174,9 +179,13 @@ class DataPaths:
def __del__(self):
self.reference_count -= 1
if not FreeCAD and self.reference_count <= 0:
os.rmdir(self.mod_dir)
os.rmdir(self.cache_dir)
os.rmdir(self.macro_dir)
paths = [self.data_dir, self.mod_dir, self.cache_dir, self.macro_dir, self.mod_dir]
for path in paths:
try:
os.rmdir(path)
except FileNotFoundError:
pass
self.data_dir = None
self.mod_dir = None
self.cache_dir = None
self.macro_dir = None