mirror of
https://github.com/beshu-tech/deltaglider.git
synced 2026-01-11 22:50:24 +01:00
never see delta suffix or reference.bin even form SDK, hold up the abstraction!
This commit is contained in:
@@ -251,9 +251,12 @@ def ls(
|
||||
size_float /= 1024.0
|
||||
return f"{size_float:.1f}P"
|
||||
|
||||
# List objects
|
||||
list_prefix = f"{bucket_name}/{prefix_str}" if prefix_str else bucket_name
|
||||
objects = list(service.storage.list(list_prefix))
|
||||
# List objects using SDK (automatically filters .delta and reference.bin)
|
||||
from deltaglider.client import DeltaGliderClient
|
||||
|
||||
client = DeltaGliderClient(service)
|
||||
response = client.list_objects(Bucket=bucket_name, Prefix=prefix_str, MaxKeys=10000)
|
||||
objects = response.contents
|
||||
|
||||
# Filter by recursive flag
|
||||
if not recursive:
|
||||
@@ -276,28 +279,24 @@ def ls(
|
||||
filtered_objects.append(obj)
|
||||
objects = filtered_objects
|
||||
|
||||
# Display objects
|
||||
# Display objects (SDK already filters reference.bin and strips .delta)
|
||||
total_size = 0
|
||||
total_count = 0
|
||||
|
||||
for obj in objects:
|
||||
# Skip reference.bin files (internal)
|
||||
if obj.key.endswith("/reference.bin"):
|
||||
continue
|
||||
|
||||
total_size += obj.size
|
||||
total_count += 1
|
||||
|
||||
# Format the display
|
||||
size_str = format_bytes(obj.size)
|
||||
date_str = obj.last_modified.strftime("%Y-%m-%d %H:%M:%S")
|
||||
# last_modified is a string from SDK, parse it if needed
|
||||
if isinstance(obj.last_modified, str):
|
||||
# Already a string, extract date portion
|
||||
date_str = obj.last_modified[:19].replace("T", " ")
|
||||
else:
|
||||
date_str = obj.last_modified.strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
# Remove .delta extension from display
|
||||
display_key = obj.key
|
||||
if display_key.endswith(".delta"):
|
||||
display_key = display_key[:-6]
|
||||
|
||||
click.echo(f"{date_str} {size_str:>10} s3://{bucket_name}/{display_key}")
|
||||
click.echo(f"{date_str} {size_str:>10} s3://{bucket_name}/{obj.key}")
|
||||
|
||||
# Show summary if requested
|
||||
if summarize:
|
||||
|
||||
@@ -347,12 +347,21 @@ class DeltaGliderClient:
|
||||
# Convert to ObjectInfo objects with smart metadata fetching
|
||||
contents = []
|
||||
for obj in result.get("objects", []):
|
||||
# Skip reference.bin files (internal files, never exposed to users)
|
||||
if obj["key"].endswith("/reference.bin") or obj["key"] == "reference.bin":
|
||||
continue
|
||||
|
||||
# Determine file type
|
||||
is_delta = obj["key"].endswith(".delta")
|
||||
|
||||
# Remove .delta suffix from display key (hide internal implementation)
|
||||
display_key = obj["key"]
|
||||
if is_delta:
|
||||
display_key = display_key[:-6] # Remove .delta suffix
|
||||
|
||||
# Create object info with basic data (no HEAD request)
|
||||
info = ObjectInfo(
|
||||
key=obj["key"],
|
||||
key=display_key, # Use cleaned key without .delta
|
||||
size=obj["size"],
|
||||
last_modified=obj.get("last_modified", ""),
|
||||
etag=obj.get("etag"),
|
||||
|
||||
Reference in New Issue
Block a user