-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathwatch-and-debug.sh
More file actions
executable file
·69 lines (54 loc) · 1.94 KB
/
watch-and-debug.sh
File metadata and controls
executable file
·69 lines (54 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/bash
TARGET_FILE=$1
if [ -z "$TARGET_FILE" ]; then
echo " 감시할 .c 파일명을 인자로 주세요."
echo "예: ./watch-and-debug.sh test.c"
exit 1
fi
# 절대 경로로 변환
TARGET_FILE=$(readlink -f "$TARGET_FILE")
# 파일 존재 여부 확인
if [ ! -f "$TARGET_FILE" ]; then
echo " 경고: 파일이 존재하지 않습니다: $TARGET_FILE"
echo " 파일이 생성될 때까지 대기 중..."
fi
echo " <${TARGET_FILE}> 저장 감시 시작 (Ctrl+C로 중단)"
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
# 파일 디렉토리 감시 (파일이 없어도 디렉토리는 존재할 것)
WATCH_DIR=$(dirname "$TARGET_FILE")
FILE_NAME=$(basename "$TARGET_FILE")
echo " 감시 디렉토리: $WATCH_DIR"
echo " 감시 파일: $FILE_NAME"
inotifywait -m -e close_write --format '%w%f' "$WATCH_DIR" | \
while IFS= read -r FULLPATH; do
# 감시 중인 파일과 일치하는지 확인
if [ "$FULLPATH" = "$TARGET_FILE" ]; then
echo " 저장됨: $FULLPATH → BeforeDebug 실행 중..."
# 파일이 실제로 존재하는지 다시 확인
if [ ! -f "$FULLPATH" ]; then
echo " 경고: 파일이 여전히 존재하지 않습니다: $FULLPATH"
continue
fi
# 파일 읽기 권한 확인
if [ ! -r "$FULLPATH" ]; then
echo " 오류: 파일을 읽을 수 없습니다: $FULLPATH"
continue
fi
(
cd "$SCRIPT_DIR"
# (선택) 이전 프롬프트 대기 중인 프로세스 정리
pkill -f "ts-node src/analysis/InProgressInteractive.ts" >/dev/null 2>&1
# lib 디렉토리 생성
mkdir -p lib/analysis
# 표준입력을 /dev/tty에 붙여야 readline이 동작함
# tsconfig.json을 사용하여 전체 프로젝트 컴파일
npx tsc
node lib/analysis/inprogress-run.js "$FULLPATH" < /dev/tty
)
if [ $? -eq 0 ]; then
echo " 실행 완료"
else
echo " 실행 실패 (종료 코드: $?)"
fi
fi
done