dfdf
This commit is contained in:
@@ -520,45 +520,13 @@ class Add_Tag(Cmdlet):
|
||||
if new_tag.lower() not in existing_lower:
|
||||
item_tag_to_add.append(new_tag)
|
||||
|
||||
# Namespace replacement: delete old namespace:* when adding namespace:value
|
||||
removed_namespace_tag: list[str] = []
|
||||
for new_tag in item_tag_to_add:
|
||||
if not isinstance(new_tag, str) or ":" not in new_tag:
|
||||
continue
|
||||
ns = new_tag.split(":", 1)[0].strip()
|
||||
if not ns:
|
||||
continue
|
||||
ns_prefix = ns.lower() + ":"
|
||||
for t in existing_tag_list:
|
||||
if t.lower().startswith(ns_prefix) and t.lower() != new_tag.lower():
|
||||
removed_namespace_tag.append(t)
|
||||
|
||||
removed_namespace_tag = sorted({t for t in removed_namespace_tag})
|
||||
|
||||
actual_tag_to_add = [t for t in item_tag_to_add if isinstance(t, str) and t.lower() not in existing_lower]
|
||||
|
||||
changed = False
|
||||
if removed_namespace_tag:
|
||||
try:
|
||||
ok_del = backend.delete_tag(resolved_hash, removed_namespace_tag, config=config)
|
||||
if ok_del:
|
||||
changed = True
|
||||
except Exception as exc:
|
||||
log(f"[add_tag] Warning: Failed deleting namespace tag: {exc}", file=sys.stderr)
|
||||
|
||||
if actual_tag_to_add:
|
||||
try:
|
||||
ok_add = backend.add_tag(resolved_hash, actual_tag_to_add, config=config)
|
||||
if ok_add:
|
||||
changed = True
|
||||
else:
|
||||
log("[add_tag] Warning: Store rejected tag update", file=sys.stderr)
|
||||
except Exception as exc:
|
||||
log(f"[add_tag] Warning: Failed adding tag: {exc}", file=sys.stderr)
|
||||
|
||||
if changed:
|
||||
total_added += len(actual_tag_to_add)
|
||||
total_modified += 1
|
||||
try:
|
||||
ok_add = backend.add_tag(resolved_hash, item_tag_to_add, config=config)
|
||||
if not ok_add:
|
||||
log("[add_tag] Warning: Store rejected tag update", file=sys.stderr)
|
||||
except Exception as exc:
|
||||
log(f"[add_tag] Warning: Failed adding tag: {exc}", file=sys.stderr)
|
||||
|
||||
try:
|
||||
refreshed_tag, _src2 = backend.get_tag(resolved_hash, config=config)
|
||||
@@ -566,6 +534,14 @@ class Add_Tag(Cmdlet):
|
||||
except Exception:
|
||||
refreshed_list = existing_tag_list
|
||||
|
||||
# Decide whether anything actually changed (case-sensitive so title casing updates count).
|
||||
if set(refreshed_list) != set(existing_tag_list):
|
||||
changed = True
|
||||
before_lower = {t.lower() for t in existing_tag_list}
|
||||
after_lower = {t.lower() for t in refreshed_list}
|
||||
total_added += len(after_lower - before_lower)
|
||||
total_modified += 1
|
||||
|
||||
# Update the result's tag using canonical field
|
||||
if isinstance(res, models.PipeObject):
|
||||
res.tag = refreshed_list
|
||||
@@ -575,7 +551,7 @@ class Add_Tag(Cmdlet):
|
||||
final_title = _extract_title_tag(refreshed_list)
|
||||
_apply_title_to_result(res, final_title)
|
||||
|
||||
if final_title and (not original_title or final_title.lower() != original_title.lower()):
|
||||
if final_title and (not original_title or final_title != original_title):
|
||||
_refresh_result_table_title(final_title, resolved_hash, str(store_name), raw_path)
|
||||
|
||||
if changed:
|
||||
|
||||
Reference in New Issue
Block a user