Skip to content

Commit 9cf3d98

Browse files
authored
Merge pull request #1020 from imbue-ai/mng/mngr
Migration script fixes from real agent testing
2 parents 4626943 + 4a7f5c1 commit 9cf3d98

File tree

1 file changed

+68
-12
lines changed

1 file changed

+68
-12
lines changed

scripts/migrate_code_mng_to_mngr.sh

Lines changed: 68 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,31 @@ else
8484
ok "Cleaned build artifacts"
8585
fi
8686

87+
# ── Helper: clean and remove old libs/mng* directories ────────────
88+
cleanup_old_mng_dirs() {
89+
for d in libs/mng libs/mng_*; do
90+
[ -d "$d" ] || continue
91+
find "$d" -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
92+
find "$d" -type d -name htmlcov -exec rm -rf {} + 2>/dev/null || true
93+
find "$d" -type d -name .pytest_cache -exec rm -rf {} + 2>/dev/null || true
94+
find "$d" -type d -name .test_output -exec rm -rf {} + 2>/dev/null || true
95+
find "$d" -name coverage.xml -delete 2>/dev/null || true
96+
find "$d" -name '.coverage' -delete 2>/dev/null || true
97+
find "$d" -path '*/.reviewer/outputs' -exec rm -rf {} + 2>/dev/null || true
98+
find "$d" -name '.stop_hook_consecutive_blocks' -delete 2>/dev/null || true
99+
find "$d" -depth -type d -empty -delete 2>/dev/null || true
100+
if [ -d "$d" ]; then
101+
if find "$d" -type f | read -r; then
102+
echo -e " ${YELLOW}WARNING: $d still has non-artifact files -- keeping it${NC}"
103+
else
104+
rm -rf "$d"
105+
ok "Removed $d"
106+
fi
107+
else
108+
ok "Removed $d"
109+
fi
110+
done
111+
}
87112

88113
# ── Helper: perl script for content replacement ───────────────────
89114
# Written to a temp file to avoid shell escaping issues with negative
@@ -240,6 +265,18 @@ if [ -d ".mng" ] && [ ! -d ".mngr" ]; then
240265
git mv ".mng" ".mngr"
241266
ok ".mng -> .mngr"
242267
fi
268+
elif [ -d ".mngr" ] && [ -d ".mng" ]; then
269+
# Both exist (e.g. after merging main reintroduces .mng/).
270+
# Copy any untracked files (local config like settings.local.toml)
271+
# from .mng/ to .mngr/ before removing .mng/.
272+
if [ "$DRY_RUN" = true ]; then
273+
dry "would copy untracked files from .mng/ to .mngr/ and remove .mng/"
274+
else
275+
cp -a -n .mng/. .mngr/ 2>/dev/null || true
276+
git rm -rf .mng 2>/dev/null || true
277+
rm -rf .mng
278+
ok "Merged .mng/ into .mngr/ and removed .mng/"
279+
fi
243280
elif [ -d ".mngr" ]; then
244281
ok "Already renamed"
245282
fi
@@ -270,6 +307,18 @@ for dir in libs/mng libs/mng_*; do
270307
ok "$dir -> $newdir"
271308
fi
272309
renamed_libs=$((renamed_libs + 1))
310+
elif [ -d "$dir" ] && [ -d "$newdir" ]; then
311+
# Both exist (after merging main reintroduces old paths).
312+
# Copy untracked files to new dir first, then remove old.
313+
if [ "$DRY_RUN" = true ]; then
314+
dry "would merge $dir into $newdir and remove $dir"
315+
else
316+
cp -a -n "$dir"/. "$newdir"/ 2>/dev/null || true
317+
git rm -rf "$dir" 2>/dev/null || true
318+
rm -rf "$dir"
319+
ok "Merged $dir into $newdir and removed"
320+
fi
321+
renamed_libs=$((renamed_libs + 1))
273322
fi
274323
done
275324
if [ "$renamed_libs" -eq 0 ]; then
@@ -344,18 +393,8 @@ elif [ "$moved" -eq 0 ]; then
344393
ok "No orphaned files"
345394
fi
346395

347-
# Clean up empty leftover libs/mng* directories
348-
for d in libs/mng libs/mng_*; do
349-
[ -d "$d" ] || continue
350-
if [ "$DRY_RUN" = true ]; then
351-
dry "would remove $d"
352-
elif find "$d" -type f | read -r; then
353-
echo -e " ${YELLOW}WARNING: $d is not empty after cleanup -- keeping it${NC}"
354-
else
355-
rm -rf "$d"
356-
ok "Removed $d"
357-
fi
358-
done
396+
# Clean up old dirs (first pass -- second pass runs after uv lock)
397+
cleanup_old_mng_dirs
359398

360399
# ── 5. Fix symlinks with stale targets ───────────────────────────
361400

@@ -399,6 +438,20 @@ for file in "${symlinks[@]+"${symlinks[@]}"}"; do
399438
fi
400439
done
401440
441+
# Also remove any broken symlinks with mng in the name (untracked,
442+
# left behind after merge brings in renamed versions)
443+
find "$REPO_ROOT" -maxdepth 2 -type l -name '*mng*' ! -name '*mngr*' | while IFS= read -r link; do
444+
if [ ! -e "$link" ]; then
445+
if [ "$DRY_RUN" = true ]; then
446+
dry "would remove broken symlink $link"
447+
else
448+
rm "$link"
449+
ok "Removed broken symlink $link"
450+
fi
451+
fixed_links=$((fixed_links + 1))
452+
fi
453+
done
454+
402455
if [ "$fixed_links" -eq 0 ]; then
403456
ok "No symlinks needed fixing"
404457
fi
@@ -618,6 +671,9 @@ else
618671
skip "uv not found, skipping lock regeneration"
619672
fi
620673
674+
# Final cleanup: re-run after uv lock which can recreate __pycache__
675+
cleanup_old_mng_dirs
676+
621677
echo -e "\n${GREEN}${BOLD}Code migration complete.${NC}"
622678
if [ "$DRY_RUN" = true ]; then
623679
echo -e "${YELLOW}This was a dry run. No changes were made.${NC}"

0 commit comments

Comments
 (0)