Update sync.sh: Refactor sync_folder function for better file synchronization

This commit is contained in:
toki 2026-04-14 13:43:42 +09:00
parent 44c8d0dc44
commit 1bac025faf

View file

@ -38,14 +38,32 @@ bump_version() {
bash "$SCRIPT_DIR/bump-version.sh" "$1" bash "$SCRIPT_DIR/bump-version.sh" "$1"
} }
# ── common 폴더 동기화 (삭제된 파일도 반영) ─────────────────────────────────── # ── 폴더 동기화 (rules.md 제외, 삭제된 파일도 반영) ─────────────────────────
sync_folder() {
local src="$1" dst="$2" exclude="${3:-}"
mkdir -p "$dst"
# dst에서 src에 없는 항목 제거 (exclude 파일 보존)
find "$dst" -mindepth 1 -maxdepth 1 | while IFS= read -r item; do
local name
name="$(basename "$item")"
[[ -n "$exclude" && "$name" == "$exclude" ]] && continue
[[ ! -e "$src/$name" ]] && rm -rf "$item"
done
# src에서 dst로 복사 (exclude 파일 제외)
find "$src" -mindepth 1 -maxdepth 1 | while IFS= read -r item; do
local name
name="$(basename "$item")"
[[ -n "$exclude" && "$name" == "$exclude" ]] && continue
rm -rf "$dst/$name"
cp -r "$item" "$dst/"
done
}
sync_common() { sync_common() {
local src="$1" dst="$2" local src="$1" dst="$2"
for folder in rules/common skills/common; do sync_folder "$src/rules/common" "$dst/rules/common" "rules.md"
rm -rf "$dst/$folder" sync_folder "$src/skills/common" "$dst/skills/common"
mkdir -p "$dst/$folder" sync_folder "$src/bin" "$dst/bin"
cp -r "$src/$folder/." "$dst/$folder/"
done
} }
# ── rules.md 내용을 진입 파일들에 반영 ─────────────────────────────────────── # ── rules.md 내용을 진입 파일들에 반영 ───────────────────────────────────────
@ -105,19 +123,15 @@ echo "▶ $(basename "$PROJECT_ROOT") → $(basename "$TARGET")"
# ── agentic-framework에서 다른 프로젝트로 ──────────────────────────────────── # ── agentic-framework에서 다른 프로젝트로 ────────────────────────────────────
if [[ "$IS_FRAMEWORK" == "1" ]]; then if [[ "$IS_FRAMEWORK" == "1" ]]; then
RULES_MD="$SRC_AO/rules/common/rules.md"
if [[ ! -d "$DST_AO" ]]; then if [[ ! -d "$DST_AO" ]]; then
echo " 최초 진행: agent-ops 전체 복사" echo " 최초 진행: agent-ops 전체 복사"
cp -r "$SRC_AO" "$TARGET/" cp -r "$SRC_AO" "$TARGET/"
rm -f "$DST_AO/rules/common/rules.md" echo -e "${YELLOW} init-agent-ops 스킬로 초기화를 진행하세요.${RESET}"
else else
echo " 이후 진행: common/ 동기화" echo " 이후 진행: common/ 동기화"
sync_common "$SRC_AO" "$DST_AO" sync_common "$SRC_AO" "$DST_AO"
rm -f "$DST_AO/rules/common/rules.md" apply_entry_files "$SRC_AO/rules/common/rules.md" "$TARGET"
fi fi
apply_entry_files "$RULES_MD" "$TARGET"
echo -e "${GREEN}✓ 완료 → $(basename "$TARGET")${RESET}" echo -e "${GREEN}✓ 완료 → $(basename "$TARGET")${RESET}"
exit 0 exit 0
fi fi
@ -145,12 +159,12 @@ echo "$NEW_VER" > "$SRC_AO/.version"
echo "$NEW_VER" > "$DST_AO/.version" echo "$NEW_VER" > "$DST_AO/.version"
cd "$TARGET" cd "$TARGET"
git add agent-ops/rules/common agent-ops/skills/common agent-ops/.version git add agent-ops/rules/common agent-ops/skills/common agent-ops/bin agent-ops/.version
git commit -m "sync: from $(basename "$PROJECT_ROOT") v$NEW_VER" git commit -m "sync: from $(basename "$PROJECT_ROOT") v$NEW_VER"
git push git push
cd "$PROJECT_ROOT" cd "$PROJECT_ROOT"
git add agent-ops/rules/common agent-ops/skills/common agent-ops/.version git add agent-ops/rules/common agent-ops/skills/common agent-ops/bin agent-ops/.version
git commit -m "sync: to agentic-framework v$NEW_VER" git commit -m "sync: to agentic-framework v$NEW_VER"
git push git push