hte-cli 0.1.23__py3-none-any.whl → 0.1.25__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hte_cli/cli.py +25 -11
- hte_cli/runner.py +3 -3
- {hte_cli-0.1.23.dist-info → hte_cli-0.1.25.dist-info}/METADATA +1 -1
- {hte_cli-0.1.23.dist-info → hte_cli-0.1.25.dist-info}/RECORD +6 -6
- {hte_cli-0.1.23.dist-info → hte_cli-0.1.25.dist-info}/WHEEL +0 -0
- {hte_cli-0.1.23.dist-info → hte_cli-0.1.25.dist-info}/entry_points.txt +0 -0
hte_cli/cli.py
CHANGED
|
@@ -448,34 +448,48 @@ def tasks_run(ctx, task_id: str | None):
|
|
|
448
448
|
def get_progress_summary(image: str) -> str:
|
|
449
449
|
"""Get a human-readable progress summary for an image with MB counts."""
|
|
450
450
|
if image not in image_layers or not image_layers[image]:
|
|
451
|
-
return "
|
|
451
|
+
return "connecting..."
|
|
452
452
|
|
|
453
453
|
layers = image_layers[image]
|
|
454
454
|
total_layers = len(layers)
|
|
455
|
-
complete = sum(1 for s, _, _ in layers.values() if "complete" in s.lower())
|
|
456
455
|
|
|
457
|
-
#
|
|
456
|
+
# Count layers in different states
|
|
457
|
+
complete = 0
|
|
458
|
+
downloading = 0
|
|
459
|
+
waiting = 0
|
|
458
460
|
total_downloaded_mb = 0
|
|
459
461
|
total_size_mb = 0
|
|
462
|
+
|
|
460
463
|
for status, downloaded, total in layers.values():
|
|
461
|
-
|
|
462
|
-
|
|
464
|
+
status_lower = status.lower()
|
|
465
|
+
if "complete" in status_lower:
|
|
466
|
+
complete += 1
|
|
463
467
|
total_downloaded_mb += total
|
|
464
468
|
total_size_mb += total
|
|
465
|
-
elif
|
|
469
|
+
elif "downloading" in status_lower:
|
|
470
|
+
downloading += 1
|
|
466
471
|
total_downloaded_mb += downloaded
|
|
467
472
|
total_size_mb += total
|
|
473
|
+
elif "waiting" in status_lower:
|
|
474
|
+
waiting += 1
|
|
468
475
|
|
|
476
|
+
# Choose the most informative display
|
|
469
477
|
if complete == total_layers and total_layers > 0:
|
|
470
478
|
if total_size_mb > 0:
|
|
471
|
-
return f"
|
|
472
|
-
return f"
|
|
479
|
+
return f"done ({total_size_mb:.0f}MB)"
|
|
480
|
+
return f"done ({total_layers} layers)"
|
|
473
481
|
elif total_size_mb > 0:
|
|
474
|
-
|
|
482
|
+
# Show MB progress when available
|
|
483
|
+
pct = int(100 * total_downloaded_mb / total_size_mb) if total_size_mb > 0 else 0
|
|
484
|
+
return f"{total_downloaded_mb:.0f}/{total_size_mb:.0f}MB ({pct}%)"
|
|
485
|
+
elif downloading > 0:
|
|
486
|
+
return f"downloading ({complete}/{total_layers} done)"
|
|
475
487
|
elif complete > 0:
|
|
476
|
-
return f"
|
|
488
|
+
return f"extracting ({complete}/{total_layers} done)"
|
|
489
|
+
elif waiting > 0:
|
|
490
|
+
return f"queued ({total_layers} layers)"
|
|
477
491
|
else:
|
|
478
|
-
return f"
|
|
492
|
+
return f"preparing ({total_layers} layers)"
|
|
479
493
|
|
|
480
494
|
def on_image_progress(image: str, line: str):
|
|
481
495
|
"""Track layer-level progress with size info."""
|
hte_cli/runner.py
CHANGED
|
@@ -401,10 +401,10 @@ class TaskRunner:
|
|
|
401
401
|
logger.info(f"Using Docker sandbox: {compose_path}")
|
|
402
402
|
|
|
403
403
|
# Collect files to mount into sandbox (exclude compose.yaml and README.md)
|
|
404
|
-
# Destination depends on benchmark -
|
|
404
|
+
# Destination depends on benchmark - match container working directory
|
|
405
405
|
if benchmark == "nyuctf":
|
|
406
|
-
# NYUCTF
|
|
407
|
-
file_dest_base = "/home/ctfplayer"
|
|
406
|
+
# NYUCTF: container starts in ~/ctf_files, mount files there
|
|
407
|
+
file_dest_base = "/home/ctfplayer/ctf_files"
|
|
408
408
|
else:
|
|
409
409
|
# Default to /root for other benchmarks (cybench, etc.)
|
|
410
410
|
file_dest_base = "/root"
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
hte_cli/__init__.py,sha256=fDGXp-r8bIoLtlQnn5xJ_CpwMhonvk9bGjZQsjA2mDI,914
|
|
2
2
|
hte_cli/__main__.py,sha256=63n0gNGfskidWDU0aAIF2N8lylVCLYKVIkrN9QiORoo,107
|
|
3
3
|
hte_cli/api_client.py,sha256=mO4buDND5cIWESg4gSKb8WkdA1iPwkmTa0L3xL6lvNQ,8153
|
|
4
|
-
hte_cli/cli.py,sha256=
|
|
4
|
+
hte_cli/cli.py,sha256=S2FylZYU3dRctDKnEV-6BVLSINNISLXHdNh5jS4smiY,28229
|
|
5
5
|
hte_cli/config.py,sha256=42Xv__YMSeRLs2zhGukJkIXFKtnBtYCHnONfViGyt2g,3387
|
|
6
6
|
hte_cli/errors.py,sha256=1J5PpxcUKBu6XjigMMCPOq4Zc12tnv8LhAsiaVFWLQM,2762
|
|
7
7
|
hte_cli/events.py,sha256=LCNLPJuk_Sz-rCl1Aa3k28y10_jwAx3urbnz3OXYPmE,3937
|
|
8
|
-
hte_cli/runner.py,sha256=
|
|
8
|
+
hte_cli/runner.py,sha256=VH-EzMLJzapVeCO2x85fve4SNjD4X11mzvo0buEoDew,23831
|
|
9
9
|
hte_cli/version_check.py,sha256=WVZyGy2XfAghQYdd2N9-0Qfg-7pgp9gt4761-PnmacI,1708
|
|
10
|
-
hte_cli-0.1.
|
|
11
|
-
hte_cli-0.1.
|
|
12
|
-
hte_cli-0.1.
|
|
13
|
-
hte_cli-0.1.
|
|
10
|
+
hte_cli-0.1.25.dist-info/METADATA,sha256=sFs2us-OeR-19YijKSOiI-Y3tP7y7mHHNWiLnqiR1xc,3615
|
|
11
|
+
hte_cli-0.1.25.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
12
|
+
hte_cli-0.1.25.dist-info/entry_points.txt,sha256=XbyEEi1H14DFAt0Kdl22e_IRVEGzimSzYSh5HlhKlFA,41
|
|
13
|
+
hte_cli-0.1.25.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|