11#! /usr/bin/env bash
2- # dev-watch.sh — Kaynak değişikliklerini izler, otomatik build alır ve uygulamayı yeniden başlatır .
3- # Kullanım : ./scripts/dev-watch.sh
2+ # dev-watch.sh — Kaynak degisikliklerini izler, otomatik build alir ve uygulamayi yeniden baslatir .
3+ # Kullanim : ./scripts/dev-watch.sh
44# Gereksinim: sudo dnf install inotify-tools
55
66set -euo pipefail
77
8- ROOT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ] /.." && pwd)"
8+ ROOT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) /.." && pwd) "
99BUILD_DIR=" ${BUILD_DIR:- $ROOT_DIR / build} "
1010BINARY=" $BUILD_DIR /ro-control"
1111APP_PID=" "
1212
13- # ─── Renk tanımları ──────────────────────────────────────────────────────────
1413RED=' \033[0;31m'
1514GREEN=' \033[0;32m'
1615YELLOW=' \033[1;33m'
@@ -23,20 +22,20 @@ ok() { echo -e "${GREEN}[dev-watch]${RESET} $*"; }
2322warn () { echo -e " ${YELLOW} [dev-watch]${RESET} $* " ; }
2423err () { echo -e " ${RED} [dev-watch]${RESET} $* " ; }
2524
26- # ─── Bağımlılık kontrolü ─────────────────────────────────────────────────────
25+ # --- Bagimlilik kontrolu ---
2726if ! command -v inotifywait & > /dev/null; then
28- err " inotify-tools bulunamadı . Kurmak için :"
27+ err " inotify-tools bulunamadi . Kurmak icin :"
2928 err " sudo dnf install inotify-tools"
3029 exit 1
3130fi
3231
3332if [[ ! -d " $BUILD_DIR " || ! -f " $BUILD_DIR /CMakeCache.txt" ]]; then
34- warn " Build dizini yok veya cmake yapılandırılmamış ."
35- warn " Önce şunu çalıştır : ./scripts/fedora-bootstrap.sh"
33+ warn " Build dizini yok veya cmake yapilandirilmamis ."
34+ warn " Once sunu calistir : ./scripts/fedora-bootstrap.sh"
3635 exit 1
3736fi
3837
39- # ─── Uygulama durdurma ───────────────────────────────────────────────────────
38+ # --- Uygulamayi durdur ---
4039stop_app () {
4140 if [[ -n " $APP_PID " ]] && kill -0 " $APP_PID " 2> /dev/null; then
4241 log " Uygulama durduruluyor (PID: $APP_PID )..."
@@ -46,57 +45,53 @@ stop_app() {
4645 fi
4746}
4847
49- # ─── Build + başlat ──────────────────────────────────────────────────────────
48+ # --- Incremental build + yeniden basla ---
5049build_and_run () {
5150 echo " "
52- log " ${BOLD} Incremental build başlıyor ...${RESET} "
51+ log " Incremental build basliyor ..."
5352 if cmake --build " $BUILD_DIR " -j" $( nproc) " 2>&1 ; then
54- ok " ✓ Build başarılı "
53+ ok " Build basarili "
5554 stop_app
56- log " Uygulama başlatılıyor : $BINARY "
55+ log " Uygulama baslatiliyor : $BINARY "
5756 " $BINARY " &
5857 APP_PID=$!
59- ok " ✓ ro-control çalışıyor (PID: $APP_PID )"
58+ ok " ro-control calisiyor (PID: $APP_PID )"
6059 else
61- err " ✗ Build hatası — bekleniyor.. ."
60+ err " Build hatasi -- degisiklikleri kontrol et ."
6261 fi
6362 echo " "
6463}
6564
66- # ─── Temiz çıkış ─────────────────────────────────────────────────────────────
65+ # --- Temiz cikis ---
6766cleanup () {
6867 echo " "
69- warn " Çıkış sinyali alındı ."
68+ warn " Cikis sinyali alindi ."
7069 stop_app
7170 exit 0
7271}
7372trap cleanup SIGINT SIGTERM
7473
75- # ─── İlk build ve başlangıç ──────────────────────────────────────────────────
76- echo -e " ${BOLD}${CYAN} "
77- echo " ╔══════════════════════════════════════════╗"
78- echo " ║ ro-Control dev-watch modu ║"
79- echo " ╚══════════════════════════════════════════╝"
80- echo -e " ${RESET} "
81- log " İzlenen dizin: $ROOT_DIR /src"
82- log " Build dizini: $BUILD_DIR "
83- log " Çıkmak için: Ctrl+C"
74+ # --- Baslangic ---
75+ echo " "
76+ log " ro-Control dev-watch modu"
77+ log " Izlenen dizin : $ROOT_DIR /src"
78+ log " Build dizini : $BUILD_DIR "
79+ log " Cikmak icin : Ctrl+C"
8480echo " "
8581
8682build_and_run
8783
88- # ─── Değişiklik izleme döngüsü ───────────────────────────────────────────────
84+ # --- Degisiklik izleme dongusu ---
8985inotifywait -m -r \
9086 --include ' \.(cpp|h|qml|js|ts)$' \
9187 -e modify,create,delete,moved_to \
9288 --format " %w%f [%e]" \
9389 " $ROOT_DIR /src" " $ROOT_DIR /i18n" 2> /dev/null \
9490| while IFS= read -r line; do
95- # Birden fazla hızlı değişikliği birleştir (debounce 800ms)
96- log " Değişiklik algılandı: $line "
91+ log " Degisiklik algilandi: $line "
9792 sleep 0.8
9893
99- # Kuyruktaki diğer olayları boşalt
94+ # Kuyruktaki diger olaylari bosalt (debounce)
10095 while IFS= read -t 0.1 -r _extra; do : ; done < & 0 2> /dev/null || true
10196
10297 build_and_run
0 commit comments