Improve log rotation, early-exit find_bundle, fix uninstall orphaned backup
apply.sh: preserve two log generations (.1 and .2) on rotation so the last two boots are always available for diagnosis. patch_ui.py: find_bundle returns on the first matching JS file instead of collecting all matches. The multi-match warning was dead weight — the Angular Ivy compiler produces exactly one bundle and the WARNING path was unreachable in practice. uninstall.sh: restore an orphaned sitecustomize.py.pre-truecloud-patch when sitecustomize.py itself has already been removed (e.g. manual deletion while the backup survived). Prevents leaving ghost vendor files in site-packages.
This commit is contained in:
@@ -22,7 +22,9 @@ PATCH_DIR="/data/truecloud-patch"
|
|||||||
LOG="$PATCH_DIR/apply.log"
|
LOG="$PATCH_DIR/apply.log"
|
||||||
|
|
||||||
# Rotate log at 512 KB to avoid unbounded growth on a system volume.
|
# Rotate log at 512 KB to avoid unbounded growth on a system volume.
|
||||||
|
# Keep one prior generation (.1) so the last two boots are always available.
|
||||||
if [ -f "$LOG" ] && [ "$(wc -c < "$LOG")" -gt 524288 ]; then
|
if [ -f "$LOG" ] && [ "$(wc -c < "$LOG")" -gt 524288 ]; then
|
||||||
|
[ -f "${LOG}.1" ] && mv "${LOG}.1" "${LOG}.2"
|
||||||
mv "$LOG" "${LOG}.1"
|
mv "$LOG" "${LOG}.1"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
+2
-16
@@ -50,7 +50,6 @@ def find_bundle():
|
|||||||
if webui is None:
|
if webui is None:
|
||||||
return None, None, None
|
return None, None, None
|
||||||
|
|
||||||
matches = []
|
|
||||||
for root, _dirs, names in os.walk(webui):
|
for root, _dirs, names in os.walk(webui):
|
||||||
for name in sorted(names): # deterministic order
|
for name in sorted(names): # deterministic order
|
||||||
if not name.endswith(".js"):
|
if not name.endswith(".js"):
|
||||||
@@ -60,24 +59,11 @@ def find_bundle():
|
|||||||
with open(path, encoding="utf-8", errors="replace") as fh:
|
with open(path, encoding="utf-8", errors="replace") as fh:
|
||||||
content = fh.read()
|
content = fh.read()
|
||||||
if FIND.search(content):
|
if FIND.search(content):
|
||||||
matches.append((path, content))
|
return webui, path, content
|
||||||
except OSError:
|
except OSError:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not matches:
|
return webui, None, None
|
||||||
return webui, None, None
|
|
||||||
|
|
||||||
if len(matches) > 1:
|
|
||||||
# Unexpected — log all matches so the operator can investigate.
|
|
||||||
print(
|
|
||||||
f"[truecloud-patch] WARNING: filterByProviders pattern found in "
|
|
||||||
f"{len(matches)} files; patching only the first."
|
|
||||||
)
|
|
||||||
for p, _ in matches:
|
|
||||||
print(f"[truecloud-patch] {p}")
|
|
||||||
|
|
||||||
path, content = matches[0]
|
|
||||||
return webui, path, content
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|||||||
@@ -76,6 +76,15 @@ if [ -n "$SITE_PKG" ] && [ -f "$SITE_PKG/sitecustomize.py" ]; then
|
|||||||
else
|
else
|
||||||
echo " Not found (already removed or install didn't place it here)."
|
echo " Not found (already removed or install didn't place it here)."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Handle orphaned backup when sitecustomize.py was removed (e.g. by a TrueNAS
|
||||||
|
# update) but the .pre-truecloud-patch file survived in the same directory.
|
||||||
|
if [ -n "$SITE_PKG" ] && [ ! -f "$SITE_PKG/sitecustomize.py" ] && \
|
||||||
|
[ -f "$SITE_PKG/sitecustomize.py.pre-truecloud-patch" ]; then
|
||||||
|
mv "$SITE_PKG/sitecustomize.py.pre-truecloud-patch" \
|
||||||
|
"$SITE_PKG/sitecustomize.py"
|
||||||
|
echo " Restored orphaned sitecustomize.py backup"
|
||||||
|
fi
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# ── Restore UI bundle ─────────────────────────────────────────────────────────
|
# ── Restore UI bundle ─────────────────────────────────────────────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user