Fixed bug related to progress bar
All checks were successful
backup.py / unit-tests (push) Successful in 15s
All checks were successful
backup.py / unit-tests (push) Successful in 15s
This commit is contained in:
BIN
.usage.gif
BIN
.usage.gif
Binary file not shown.
|
Before Width: | Height: | Size: 369 KiB After Width: | Height: | Size: 325 KiB |
12
backup.py
12
backup.py
@@ -119,11 +119,13 @@ class BackupProgress:
|
|||||||
def draw_progress_bar(self, filename: str = "") -> None:
|
def draw_progress_bar(self, filename: str = "") -> None:
|
||||||
"""draw progress bar"""
|
"""draw progress bar"""
|
||||||
self.current += 1
|
self.current += 1
|
||||||
percentage = (self.current / self.total) * 100 if self.total > 0 else 0
|
|
||||||
|
actual = min(self.current, self.total)
|
||||||
|
percentage = (actual / self.total) * 100 if self.total > 0 else 0
|
||||||
|
|
||||||
# Create a CLI prograss bar
|
# Create a CLI prograss bar
|
||||||
bar_width = 30
|
bar_width = 30
|
||||||
filled = int(bar_width * self.current / self.total)
|
filled = int(bar_width * actual / self.total)
|
||||||
bar = f"{EscapeChar.GRAY.value}{'█' * filled}{'░' * (bar_width - filled)}{EscapeChar.RESET.value}"
|
bar = f"{EscapeChar.GRAY.value}{'█' * filled}{'░' * (bar_width - filled)}{EscapeChar.RESET.value}"
|
||||||
|
|
||||||
# Truncate filename if it's too long to display
|
# Truncate filename if it's too long to display
|
||||||
@@ -141,7 +143,7 @@ class BackupProgress:
|
|||||||
|
|
||||||
progress_bar = (f"\r {self.status_msg} [{bar}] "
|
progress_bar = (f"\r {self.status_msg} [{bar}] "
|
||||||
f"{EscapeChar.YELLOW.value}{percentage:.1f}%{EscapeChar.RESET.value} "
|
f"{EscapeChar.YELLOW.value}{percentage:.1f}%{EscapeChar.RESET.value} "
|
||||||
f"({self.current}/{self.total}): "
|
f"({actual}/{self.total}): "
|
||||||
f"{EscapeChar.BLUE.value}'{filename}'{EscapeChar.RESET.value}")
|
f"{EscapeChar.BLUE.value}'{filename}'{EscapeChar.RESET.value}")
|
||||||
print(f"{EscapeChar.ERASE_LINE.value}{progress_bar}", end='', flush=True)
|
print(f"{EscapeChar.ERASE_LINE.value}{progress_bar}", end='', flush=True)
|
||||||
|
|
||||||
@@ -347,8 +349,8 @@ class Backup:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def count_tar_entries(source_dir: Path) -> int:
|
def count_tar_entries(source_dir: Path) -> int:
|
||||||
"""Count all entries (files, dirs) that tar processes"""
|
"""Count all entries (files, dirs) processed by tar including the root directory"""
|
||||||
return sum(1 for _ in source_dir.rglob('*'))
|
return sum(1 for _ in source_dir.rglob('*')) + 1
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_tarball(source_dir: Path, output_file: Path, verbose: bool) -> Result[None]:
|
def create_tarball(source_dir: Path, output_file: Path, verbose: bool) -> Result[None]:
|
||||||
|
|||||||
Reference in New Issue
Block a user