diff --git a/eye.sh b/eye.sh deleted file mode 100755 index e66947e..0000000 --- a/eye.sh +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/bash -stty -echoctl # Отключает вывод управляющих символов по типу ^C - -# НАСТРОЙКА СКРИПТА ТУТ ########################################################### -DURATION=1 # Задержка между проверками в секундах -WATCH_DIRS=("posts" "mvc" "assets") # Массив директорий для наблюдения -BINARY_PATH="./main" # Путь до бинарного файла -BUILD_CMD="go build -o $BINARY_PATH main.go" # Команда для сборки -################################################################################### - -# Массивы для хранения информации о директориях -declare -A LAST_MODS -declare -A LAST_COUNTS -CLEANUP_DONE=0 -# - -# Вывод в синем цвете -blue() { - echo -e "\033[34m$1\033[0m" -} - -# Очистка при завершении работы скрипта -cleanup() { - [ $CLEANUP_DONE -eq 1 ] && exit 0 - blue "EYE | cleanup..." - kill_proc $1 - rm -f $BINARY_PATH - blue "EYE | see you later!" - CLEANUP_DONE=1 - exit 0 -} - -# Убийство процесса по его pid -kill_proc() { - local pid=$1 - if [ -n "$pid" ] && kill -0 $pid 2>/dev/null; then - kill $pid - blue "EYE | process killed (PID: $pid)" - fi -} - -# Проверка изменений в директориях -check_changes() { - local changed=0 - - for dir in "${WATCH_DIRS[@]}"; do - local current_mod=$(find "$dir" -type f -exec stat -c %Y {} \; | sort -nr | head -1) - local current_count=$(find "$dir" -type f 2>/dev/null | wc -l) - - if { [ -n "$current_mod" ] && [ "$current_mod" -gt "${LAST_MODS[$dir]}" ]; } || [ "$current_count" -ne "${LAST_COUNTS[$dir]}" ]; then - changed=1 - LAST_MODS["$dir"]=$current_mod - LAST_COUNTS["$dir"]=$current_count - [ -n "$1" ] && blue "EYE | changes detected in \033[94m$dir\033[0m" - fi - done - - return $changed -} - -# Основная функция -main() { - local pid="" - - # Ловушка для сигналов завершения - trap 'cleanup $pid' SIGINT SIGTERM SIGHUP SIGQUIT EXIT - # - - # Инициализация массивов - for dir in "${WATCH_DIRS[@]}"; do - LAST_MODS["$dir"]=0 - LAST_COUNTS["$dir"]=$(find "$dir" -type f 2>/dev/null | wc -l) - blue "EYE | started watching the directory \033[94m$dir\033[0m" - done - # - - # Основной цикл работы скрипта - while true; do - check_changes $pid - if [ $? -eq 1 ]; then - blue "EYE | rebuilding..." - eval $BUILD_CMD 2>/dev/null - if [ $? -eq 0 ]; then - blue "EYE | build successful. restarting..." - kill_proc $pid - $BINARY_PATH & - pid=$! - blue "EYE | started new process (PID: $pid)" - else - blue "EYE | build failed" - fi - fi - - sleep $DURATION - done -} - -main \ No newline at end of file