Coverage for src/gitlabracadabra/disk_cache.py: 55%

16 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-14 23:10 +0200

1# 

2# Copyright (C) 2019-2025 Mathieu Parent <math.parent@gmail.com> 

3# 

4# This program is free software: you can redistribute it and/or modify 

5# it under the terms of the GNU Lesser General Public License as published by 

6# the Free Software Foundation, either version 3 of the License, or 

7# (at your option) any later version. 

8# 

9# This program is distributed in the hope that it will be useful, 

10# but WITHOUT ANY WARRANTY; without even the implied warranty of 

11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

12# GNU Lesser General Public License for more details. 

13# 

14# You should have received a copy of the GNU Lesser General Public License 

15# along with this program. If not, see <http://www.gnu.org/licenses/>. 

16 

17from os import getenv 

18from pathlib import Path 

19from platform import system 

20 

21 

22def user_cache_dir_path() -> Path: 

23 """Get user cache directory. 

24 

25 Returns: 

26 A Path object. 

27 """ 

28 if system().lower() == "windows": 

29 path = Path(getenv("APPDATA") or "~") 

30 elif system().lower() == "darwin": 

31 path = Path("~") / "Library" / "Caches" 

32 else: 

33 path = Path(getenv("XDG_CACHE_HOME") or "~/.cache") 

34 return path.expanduser() 

35 

36 

37def cache_dir(subdir: str) -> Path: 

38 """Create a cached dir and returns its full path. 

39 

40 Args: 

41 subdir: Subdirectory. 

42 

43 Returns: 

44 Cache dir full path. 

45 """ 

46 path = user_cache_dir_path() / "gitlabracadabra" 

47 if subdir: 

48 path /= subdir 

49 path.mkdir(parents=True, exist_ok=True) 

50 return path