+1
-1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "jpacrepo-uploader"
|
||||
version = "0.0.7"
|
||||
version = "0.0.8"
|
||||
authors = [
|
||||
{ name="Walter Oggioni", email="oggioni.walter@gmail.com" },
|
||||
]
|
||||
|
||||
@@ -3,6 +3,7 @@ import logging
|
||||
import re
|
||||
import shutil
|
||||
import urllib.parse
|
||||
import sys
|
||||
from argparse import ArgumentParser
|
||||
from dataclasses import dataclass, fields
|
||||
from pathlib import Path
|
||||
@@ -56,6 +57,7 @@ class UploadPt:
|
||||
class PackageUploadProgressBar(Bar):
|
||||
|
||||
def __init__(self,
|
||||
headline: str,
|
||||
uploaded_size: int,
|
||||
packages_total_size: int,
|
||||
start_ts: float = monotonic(),
|
||||
@@ -63,8 +65,9 @@ class PackageUploadProgressBar(Bar):
|
||||
**kwargs: Any):
|
||||
kwargs.setdefault('suffix',
|
||||
'speed: %(total_speed)s, completed: %(percent).2f%% - ETA: %(eta_td)s')
|
||||
kwargs.setdefault('width', terminal_size[0] - 96)
|
||||
kwargs.setdefault('width', max(0, terminal_size[0] - 72))
|
||||
super().__init__(*args, **kwargs)
|
||||
self._headline = headline
|
||||
self.uploaded_size = uploaded_size
|
||||
self.packages_total_size = packages_total_size
|
||||
self.start_ts = start_ts
|
||||
@@ -97,6 +100,19 @@ class PackageUploadProgressBar(Bar):
|
||||
def upload_progress(self) -> str:
|
||||
return f'{format_filesize(self.index, 5, 2)} / {format_filesize(self.max, 5, 2)}'
|
||||
|
||||
@staticmethod
|
||||
def _clear_previous_line():
|
||||
sys.stdout.write("\033[1A\033[2K")
|
||||
sys.stdout.flush()
|
||||
|
||||
def __enter__(self):
|
||||
print(self._headline)
|
||||
return super().__enter__()
|
||||
|
||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||
result = super().__exit__(exc_type, exc_val, exc_tb)
|
||||
PackageUploadProgressBar._clear_previous_line()
|
||||
return result
|
||||
|
||||
class XferProgress:
|
||||
|
||||
@@ -263,16 +279,16 @@ class JpacrepoClient:
|
||||
start_ts = monotonic()
|
||||
for i, file in enumerate(files):
|
||||
upload_size = file.stat().st_size
|
||||
if len(file.name) <= 32:
|
||||
if len(file.name) <= terminal_size[0]:
|
||||
filename = file.name
|
||||
else:
|
||||
filename = file.name[:29] + '...'
|
||||
filename = file.name[:terminal_size[0] - 3] + '...'
|
||||
kwargs = dict(
|
||||
message='Uploading ',
|
||||
max=upload_size,
|
||||
message=f'({i + 1}/{len(files)}) {filename}',
|
||||
start_ts=start_ts
|
||||
)
|
||||
with PackageUploadProgressBar(progress.uploaded_size, total_size, **kwargs) as bar:
|
||||
with PackageUploadProgressBar(f'({i + 1}/{len(files)}) {filename}', progress.uploaded_size, total_size, **kwargs) as bar:
|
||||
bar.start_ts = start_ts
|
||||
progress.bar = bar
|
||||
self._upload_file(curl, file, progress)
|
||||
|
||||
Reference in New Issue
Block a user