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