@@ -328,10 +328,17 @@ def cache_list_files(self, *, pattern: Optional[str] = None, branch: Optional[st
328328 files = [i for i in files if fnmatch .fnmatch (i , pattern )]
329329 return files
330330
331- def cache_read_file (self , filename : str , * , branch : Optional [str ] = None ) -> Optional [bytes ]:
332- assert "/" not in filename
331+ def cache_get_path (self , filename : str , * , branch : Optional [str ] = None , makedirs : bool = False ) -> str :
332+ if "/" in filename :
333+ raise ValueError (f"Filename must not contain path: { filename } " )
333334 branch = branch or self ._git .current_branch
334335 path = self ._get_path (["cache" , filename ], branch = branch )
336+ if makedirs :
337+ os .makedirs (os .path .dirname (path ), exist_ok = True )
338+ return path
339+
340+ def cache_read_file (self , filename : str , * , branch : Optional [str ] = None ) -> Optional [bytes ]:
341+ path = self .cache_get_path (filename , branch = branch )
335342 with self ._lock ():
336343 try :
337344 with open (path , "rb" ) as f :
@@ -340,9 +347,7 @@ def cache_read_file(self, filename: str, *, branch: Optional[str] = None) -> Opt
340347 return None
341348
342349 def cache_write_file (self , filename : str , data : bytes , * , branch : Optional [str ] = None ):
343- assert "/" not in filename
344- branch = branch or self ._git .current_branch
345- path = self ._get_path (["cache" , filename ], branch = branch )
350+ path = self .cache_get_path (filename , branch = branch )
346351 with self ._lock ():
347352 os .makedirs (os .path .dirname (path ), exist_ok = True )
348353 with open (path , "wb" ) as f :
@@ -352,9 +357,11 @@ def cache_delete_files(self, filenames: List[str], *, branch: Optional[str] = No
352357 branch = branch or self ._git .current_branch
353358 with self ._lock ():
354359 for filename in filenames :
355- assert "/" not in filename
356- path = self ._get_path (["cache" , filename ], branch = branch )
357- os .unlink (path )
360+ path = self .cache_get_path (filename , branch = branch )
361+ try :
362+ os .unlink (path )
363+ except FileNotFoundError :
364+ pass
358365
359366 # LAST BUILDROOT
360367
0 commit comments