jkj
This commit is contained in:
@@ -10,7 +10,17 @@ import sys
|
||||
|
||||
from SYS.logger import log, debug
|
||||
|
||||
from ._shared import Cmdlet, CmdletArg, SharedArgs, get_field, should_show_help, normalize_hash, first_title_tag
|
||||
from . import _shared as sh
|
||||
|
||||
Cmdlet, CmdletArg, SharedArgs, get_field, should_show_help, normalize_hash, first_title_tag = (
|
||||
sh.Cmdlet,
|
||||
sh.CmdletArg,
|
||||
sh.SharedArgs,
|
||||
sh.get_field,
|
||||
sh.should_show_help,
|
||||
sh.normalize_hash,
|
||||
sh.first_title_tag,
|
||||
)
|
||||
import pipeline as ctx
|
||||
|
||||
|
||||
@@ -209,6 +219,10 @@ class Search_Store(Cmdlet):
|
||||
table_title += f" [{storage_backend}]"
|
||||
|
||||
table = ResultTable(table_title)
|
||||
try:
|
||||
table.set_source_command("search-store", list(args_list))
|
||||
except Exception:
|
||||
pass
|
||||
if hash_query:
|
||||
try:
|
||||
table.set_preserve_order(True)
|
||||
@@ -309,6 +323,11 @@ class Search_Store(Cmdlet):
|
||||
ext_val = Path(path_str).suffix
|
||||
except Exception:
|
||||
ext_val = None
|
||||
if not ext_val and title:
|
||||
try:
|
||||
ext_val = Path(str(title)).suffix
|
||||
except Exception:
|
||||
ext_val = None
|
||||
|
||||
size_bytes = meta_obj.get("size")
|
||||
if size_bytes is None:
|
||||
@@ -333,6 +352,20 @@ class Search_Store(Cmdlet):
|
||||
ctx.emit(payload)
|
||||
|
||||
if found_any:
|
||||
# Title should reflect the command, query, and only stores present in the table.
|
||||
store_counts: "OrderedDict[str, int]" = OrderedDict()
|
||||
for row_item in results_list:
|
||||
store_val = str(row_item.get("store") or "").strip()
|
||||
if not store_val:
|
||||
continue
|
||||
if store_val not in store_counts:
|
||||
store_counts[store_val] = 0
|
||||
store_counts[store_val] += 1
|
||||
|
||||
counts_part = " ".join(f"{name}:{count}" for name, count in store_counts.items() if count > 0)
|
||||
base_title = f"search-store: {query}".strip()
|
||||
table.title = f"{base_title} | {counts_part}" if counts_part else base_title
|
||||
|
||||
ctx.set_last_result_table(table, results_list)
|
||||
db.append_worker_stdout(worker_id, json.dumps(results_list, indent=2))
|
||||
db.update_worker_status(worker_id, 'completed')
|
||||
@@ -377,28 +410,6 @@ class Search_Store(Cmdlet):
|
||||
log(f"Backend {backend_name} search failed: {exc}", file=sys.stderr)
|
||||
results = all_results[:limit]
|
||||
|
||||
def _format_storage_label(name: str) -> str:
|
||||
clean = str(name or "").strip()
|
||||
if not clean:
|
||||
return "Unknown"
|
||||
return clean.replace("_", " ").title()
|
||||
|
||||
storage_counts: OrderedDict[str, int] = OrderedDict((name, 0) for name in searched_backends)
|
||||
for item in results or []:
|
||||
store = get_field(item, "store")
|
||||
if not store:
|
||||
continue
|
||||
key = str(store).lower()
|
||||
if key not in storage_counts:
|
||||
storage_counts[key] = 0
|
||||
storage_counts[key] += 1
|
||||
|
||||
if storage_counts or query:
|
||||
display_counts = OrderedDict((_format_storage_label(name), count) for name, count in storage_counts.items())
|
||||
summary_line = table.set_storage_summary(display_counts, query, inline=True)
|
||||
if summary_line:
|
||||
table.title = summary_line
|
||||
|
||||
if results:
|
||||
for item in results:
|
||||
def _as_dict(obj: Any) -> Dict[str, Any]:
|
||||
@@ -428,6 +439,20 @@ class Search_Store(Cmdlet):
|
||||
results_list.append(normalized)
|
||||
ctx.emit(normalized)
|
||||
|
||||
# Title should reflect the command, query, and only stores present in the table.
|
||||
store_counts: "OrderedDict[str, int]" = OrderedDict()
|
||||
for row_item in results_list:
|
||||
store_val = str(row_item.get("store") or "").strip()
|
||||
if not store_val:
|
||||
continue
|
||||
if store_val not in store_counts:
|
||||
store_counts[store_val] = 0
|
||||
store_counts[store_val] += 1
|
||||
|
||||
counts_part = " ".join(f"{name}:{count}" for name, count in store_counts.items() if count > 0)
|
||||
base_title = f"search-store: {query}".strip()
|
||||
table.title = f"{base_title} | {counts_part}" if counts_part else base_title
|
||||
|
||||
ctx.set_last_result_table(table, results_list)
|
||||
db.append_worker_stdout(worker_id, json.dumps(results_list, indent=2))
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user