Skip to content

Commit 8fb5171

Browse files
authored
Add temporary directory to verbose output (#572)
1 parent 22ed22a commit 8fb5171

File tree

5 files changed

+34
-6
lines changed

5 files changed

+34
-6
lines changed

lean/click.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,21 @@ def get_whoami_message() -> str:
5959

6060
return f"logged in as {member.name} ({member.email})"
6161

62+
def get_disk_space_info(path: Path) -> str:
63+
try:
64+
from shutil import disk_usage
65+
usage = disk_usage(str(path))
66+
total, used, free = usage.total, usage.used, usage.free
67+
68+
return (
69+
f"Space in temporary location - "
70+
f"Total: {total / (1024 ** 3):.2f} GB, "
71+
f"Used: {used / (1024 ** 3):.2f} GB, "
72+
f"Free: {free / (1024 ** 3):.2f} GB"
73+
)
74+
except Exception as e:
75+
return f"Error getting disk space: {str(e)}"
76+
6277
class VerboseOption(ClickOption):
6378
def __init__(self, *args, **kwargs):
6479
super().__init__(["--verbose"],
@@ -130,12 +145,21 @@ def _parse_verbose_option(ctx: Context, param: Parameter, value: Optional[bool])
130145
docker_version = run("docker --version", shell=True, capture_output=True).stdout.decode("utf").replace("Docker version ", "")
131146
except:
132147
docker_version = "Not installed"
148+
149+
try:
150+
temp_dir = container.temp_manager.create_temporary_directory().parent
151+
space_info = get_disk_space_info(temp_dir)
152+
except:
153+
temp_dir = ""
154+
space_info = ""
133155

134156
logger.debug(f"Context information:\n" +
135157
hostname +
136158
username +
137159
f" Python version: {python_version}\n"
138160
f" OS: {platform()}\n"
161+
f" Temporary directory: {temp_dir}\n"
162+
f" {space_info}\n"
139163
f" Lean CLI version: {lean_cli_version}\n"
140164
f" .NET version: {dotnet_version}\n"
141165
f" VS Code version: {vscode_version}\n"

lean/components/util/temp_manager.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@
1212
# limitations under the License.
1313

1414
from pathlib import Path
15+
from lean.components.util.logger import Logger
1516

1617
class TempManager:
1718
"""The TempManager class provides access to temporary directories."""
1819

19-
def __init__(self) -> None:
20+
def __init__(self, logger: Logger) -> None:
2021
"""Creates a new TempManager instance."""
2122
self._temporary_directories = []
2223
self.delete_temporary_directories_when_done = True
24+
self._logger = logger
2325

2426
def create_temporary_directory(self) -> Path:
2527
"""Returns the path to an empty temporary directory.
@@ -29,6 +31,7 @@ def create_temporary_directory(self) -> Path:
2931
from tempfile import mkdtemp
3032
path = Path(mkdtemp(prefix="lean-cli-"))
3133
self._temporary_directories.append(path)
34+
self._logger.debug(f"Created temporary directory: {path}")
3235
return path
3336

3437
def delete_temporary_directories(self) -> None:

lean/container.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def initialize(self,
6868
self.platform_manager = PlatformManager()
6969
self.task_manager = TaskManager(self.logger)
7070
self.name_generator = NameGenerator()
71-
self.temp_manager = TempManager()
71+
self.temp_manager = TempManager(self.logger)
7272
self.xml_manager = XMLManager()
7373
self.http_client = HTTPClient(self.logger)
7474

tests/components/docker/test_lean_runner.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ def create_lean_runner(docker_manager: mock.Mock) -> LeanRunner:
8787
docker_manager,
8888
module_manager,
8989
project_manager,
90-
TempManager(),
90+
TempManager(logger),
9191
xml_manager)
9292

9393

tests/components/util/test_temp_manager.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@
1212
# limitations under the License.
1313

1414
from lean.components.util.temp_manager import TempManager
15+
from unittest import mock
1516

1617

1718
def test_create_temporary_directory_creates_empty_directory() -> None:
18-
temp_manager = TempManager()
19+
temp_manager = TempManager(mock.Mock())
1920

2021
path = temp_manager.create_temporary_directory()
2122

@@ -24,13 +25,13 @@ def test_create_temporary_directory_creates_empty_directory() -> None:
2425

2526

2627
def test_create_temporary_directory_creates_new_directory_every_time() -> None:
27-
temp_manager = TempManager()
28+
temp_manager = TempManager(mock.Mock())
2829

2930
assert temp_manager.create_temporary_directory() != temp_manager.create_temporary_directory()
3031

3132

3233
def test_delete_temporary_directories_deletes_all_previously_created_directories() -> None:
33-
temp_manager = TempManager()
34+
temp_manager = TempManager(mock.Mock())
3435

3536
paths = []
3637
for i in range(5):

0 commit comments

Comments
 (0)